python使用openpyxl库读写Excel表格的方法(增删改查操作)


Posted in Python onMay 02, 2021

一、前言

嗨,大家好,我是新发。
最近需要做个小工具,可以通过python来读写Excel,实现增删改查操作。以前用的是xlrdxlwt这两个python库,今天我要讲的是openpyxl库,我觉得openpyxlxlrdxlwt更强大更好用,话不多说,开始吧。

二、安装openpyxl

可以直接通过命令行安装

pip install openpyxl

python使用openpyxl库读写Excel表格的方法(增删改查操作)

如果你是内网环境,则可以先在外网下载openpyxl库然后转到内网再安装。
openpyxl下载地址:https://pypi.org/project/openpyxl/#files

python使用openpyxl库读写Excel表格的方法(增删改查操作)

不过如果你下载了openpyxl,因为openpyxl还依赖了et_xmlfile库,所以你还得下载个et_xmlfile

如果是用命令行pip install openpyxl,则会自动下载依赖。

et_xmlfile下载地址:https://pypi.org/project/et-xmlfile/#files

python使用openpyxl库读写Excel表格的方法(增删改查操作)

安装完毕后,在python中执行import openpyxl如果没有报错,则说明安装成功了。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

三、openpyxl的使用

1、创建Excel文件

演示代码:

import openpyxl

book = openpyxl.Workbook()
book.save(u'我的表格.xlsx')

运行效果如下,生成了一个excel表格。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

2、加载已存在的Excel文件

上面已经创建了一个表格,我们可以直接加载它。
演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
# ... 
book.close()

3、创建sheet

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book.create_sheet('我的Sheet')
book.save(u'我的表格.xlsx')
book.close()

运行效果如下:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

4、判断某个sheet是否存在

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
if None != book[u'我的Sheet']:
    print('我的Sheet 存在')
book.close()

运行结果:

我的Sheet 存在

5、遍历所有Sheet的名称

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
for sheet_name in book.sheetnames:
    print(sheet_name)
book.close()

运行结果:

Sheet
我的Sheet

6、写入单元格

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
sheet.cell(1,1).value = 'name'
sheet.cell(2,1).value = '姓名'
sheet.cell(3,1).value = '林新发'
book.save(u'我的表格.xlsx')
book.close()

运行效果

python使用openpyxl库读写Excel表格的方法(增删改查操作)

7、获取单元格的各个属性值

为了演示,我在我名字那里加个批注:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
cell = sheet.cell(3,1)
# 获取单元格的值
print('value:%s'%cell.value)
# 获取行号、列号
print('row: %d, col: %d'%(cell.row, cell.column))
# 获取列名
print('column_letter: %s'%cell.column_letter)
# 单元格的坐标
print('coordinate: %s'%cell.coordinate)
# 单元格数据格式,n: 数字,s:字符串,d: 日期
print('data_type: %s'%cell.data_type)
# 单元格编码格式
print('encoding: %s'%cell.encoding)
# 单元格样式
print('style: %s'%cell.style)
# 单元格批注
print('comment: %s'%cell.comment)
book.close()

运行结果:

value:林新发
row: 3, col: 1
column_letter: A
coordinate: A3
data_type: s
encoding: utf-8
style: 常规
comment: Comment: linxinfa:
多才多艺 by linxinfa

8、遍历单元格

为了演示,我加多一写数据:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

一行一行遍历,演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 一行一行遍历
for one_row in sheet.rows:
    for cell in one_row:
        print(cell, cell.value)
book.close()

运行结果:

<Cell 'Sheet'.A1> name
<Cell 'Sheet'.B1> profession
<Cell 'Sheet'.C1> hobby
<Cell 'Sheet'.A2> 姓名
<Cell 'Sheet'.B2> 职业
<Cell 'Sheet'.C2> 爱好
<Cell 'Sheet'.A3> 林新发
<Cell 'Sheet'.B3> Unity3D游戏开发工程师
<Cell 'Sheet'.C3> 吉他、钢琴、画画、猫猫、写博客

一列一列遍历,演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 一列一列遍历
for one_col in sheet.columns:
    for cell in one_col:
        print(cell, cell.value)
book.close()

运行结果:

<Cell 'Sheet'.A1> name
<Cell 'Sheet'.A2> 姓名
<Cell 'Sheet'.A3> 林新发
<Cell 'Sheet'.B1> profession
<Cell 'Sheet'.B2> 职业
<Cell 'Sheet'.B3> Unity3D游戏开发工程师
<Cell 'Sheet'.C1> hobby
<Cell 'Sheet'.C2> 爱好
<Cell 'Sheet'.C3> 吉他、钢琴、画画、猫猫、写博客

9、最大行最大列

为了演示,再加点数据。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
print('max_row: %d, max_column: %d'%(sheet.max_row, sheet.max_column))
book.close()

运行结果:

max_row: 4, max_column: 3

10、删除行或列

为了演示,我再加多写数据。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 删除第5行
sheet.delete_rows(5)
# 删除第4列
sheet.delete_cols(4)
book.save(u'我的表格.xlsx')
book.close()

运行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

11、设置字体

演示代码:

import openpyxl
from openpyxl.styles import Font

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
cell = sheet.cell(4,1)
cell.font = Font(name='微软雅黑',size=18,color='00FFCC99',b=True,i=False)
book.save(u'我的表格.xlsx')
book.close()

运行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

12、填充单元格颜色

填充颜色之前

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl
from openpyxl.styles import PatternFill

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
cell = sheet.cell(4,2)
# 设置填充色
cell.fill = PatternFill('solid',fgColor='FFBB00')
book.save(u'我的表格.xlsx')
book.close()

运行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

13、设置行高与列宽

为了演示,我先把行高和列宽改成这样:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl
from openpyxl.utils import get_column_letter

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 取第4行
row_4 = sheet.row_dimensions[4]
# 设置行高
row_4.height = 15
# 取第2列
col_2 = sheet.column_dimensions[get_column_letter(2)]
# 设置列宽
col_2.width = 40
book.save(u'我的表格.xlsx')
book.close()

执行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

注意,上面我用到了一个get_column_letter方法,因为column_dimensions需要的是字母参数,所以我们不能直接传2,通过get_column_letter(2)即可得到"B",也就是第2列
如果要反过来,通过字母逆算出数字,则用column_index_from_string方法,例:

from openpyxl.utils import column_index_from_string
print(column_index_from_string('B'))
# 输出2

四、结束语

完毕。
博主是Unity3D游戏工程师,喜欢Unity的同学,不要忘记点击关注,如果有什么Unity相关的技术难题,也欢迎留言或私信~

到此这篇关于python使用openpyxl库读写Excel表格的方法(增删改查操作)的文章就介绍到这了,更多相关python读写Excel表格内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
深入理解NumPy简明教程---数组2
Dec 17 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
python实现报表自动化详解
Nov 16 Python
python实现事件驱动
Nov 21 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 Python
python 3.6.7实现端口扫描器
Sep 04 Python
python将时分秒转换成秒的实例
Dec 07 Python
浅谈Python3中print函数的换行
Aug 05 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 Python
python图像处理 PIL Image操作实例
Apr 09 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 Python
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
Django 实现jwt认证的示例
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 #Python
python绘图subplots函数使用模板的示例代码
教你怎么用Python处理excel实现自动化办公
You might like
php xml文件操作代码(一)
2009/03/20 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
SVG实现时钟效果
2018/07/17 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
python区块及区块链的开发详解
2019/07/03 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
旺仔牛奶广告词
2014/03/20 职场文书
销售员试用期自我评价
2014/09/15 职场文书
同事欢送会致辞
2015/07/31 职场文书