持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
介绍
openpyxl是一个用于读取/写入excel 2010 xlsx/xlsm/xltx/xltm 文件的Python第三方库,它是由于缺乏现有的库来从 Python 本地读取/写入 Office Open XML 格式而诞生的。
该模块可以帮助开发人员通过代码去操作excel 文件。
安装和使用
安装
pip install openpyxl
如果在操作excel文件时包含图片文件,就需要额外安装pillow。
使用 - 读取文件
通过openpyxl读取硬盘上的excel文件,使用的是该模块下的load_workbook方法:
def load_workbook(filename, read_only=False, keep_vba=KEEP_VBA, data_only=False, keep_links=True):
"""
filename: 文件路径
read_only: 文件只能读不能被编辑
data_only: 控制单元格是读取公式还是文件读取时的值,默认为False(只获取计算结果,并不关心具体公式,可以设置为True)
"""
from openpyxl import load_workbook
wb = load_workbook("filename")
在excel文件中可能有多个sheet,可以通过不同的sheet名称获取对应的书,也可以通过遍历获取所有的sheet.
# 根据sheet名称获取
sheet = wb['sheet_name']
# 遍历excel文件中所有的sheet
for sheet in wb:
... ...
# 操作完成之后需要关闭文件
wb.close()
使用 - 操作数据
获取到workbook之后就可以获取其中的数据,可以通过不同的方式获取不同的数据:
wb = load_workbook("filename") # 加载文件
sheet = wb['sheet_name'] # 获取某一个sheet
# 获取sheet中的某一行数据,n代表第几行,1 2 3...
sheet[n]
# 获取某一列数据, A B C。。。
sheet["A"]
# 获取指定范围的单元格
sheet['A2:D2'] # 获取行
sheet['A2:A4'] # 获取列
sheet['A1:D4'] # 获取4行4列
# 通过迭代方式访问单元格数据
for row in sheet['A1:D4']:
for cell in row:
print(cell.value)
"""
获取值: cell.value
获取cell所在行: cell.row
获取cell所在列:cell.column
"""
同样可以通过代码向sheet中添加数据:
# 末尾添加一行
ws.append(['cell1', 'cell 2'])
# 指定位置插入一行数据
ws.insert_rows(7)
for cell in ws[7]:
cell.value = 'cell value'
# 指定位置插入列
ws.insert_cols(2)
for i in ws.max_row:
cell = ws.cell(i, 2)
cell.value = 'cell value'
最后再来说一下删除数据:
# 删除指定行
ws.delete_rows(2)
# 删除指定列
ws.delete_cols(2)
我们使用一个简单的案例总结上述对数据的操作,将数据写入到文件中:
data = [
["Fruit", "Quantity"],
["Kiwi", 3],
["Grape", 15],
["Apple", 3]
]
wb = Workbook() # 创建一个workbook对象
ws = wb.active # 相当于打开新创建的excel文件
for r in date:
ws.append(r) # 向其中写入数据
wb.save('file_name') # 保存数据
总结
上文主要对openpyxl的基本使用 - 数据的增删改查进行了简单的介绍,该模块还有很多其他的功能,比如为单元格添加样式,操作单元格中的图片等等,这里只介绍基本使用,其他更多关于该模块的使用请参考官方文档进行学习。