使用Python的模块openpyxl操作EXCEL
Python操作Excel需要使用模块(也称为库),在此介绍openpyxl模块的使用。请安装好该模块,在cmd中输入:
pip install openpyxl
在cmd中输入python -m pip list 或 pip list】
openpyxl基本语法介绍
模块导入:
from openpyxl
from openpyxl import Workbook
创建一个Excel工作簿:
wb = Workbook().save("example.xlsx")
Workbook对象是一个用来创建一个工作簿,save方法用来将这个对象保存成一个文件。
可以查看一下,程序执行的目录下是不是出现了一个example.xlsx文件。这时,是一个全新的文件,里面只有一张默认的表。
读取一个Excel工作簿(workbook):
即读取已存在的xlsx文件,使用openpyxl中的load_wordbook()方法。示例代码如下:
from openpyxl import load_workbook
wb = load_workbook("example.xlsx")
获取Excel工作表的最大列和最大行
row = ws.max_row # 获取表中的最大列
column = ws.max_column # 获取表中的最大行
使用wb的sheetnames属性来获取文件中的所有工作表的名字,:
wb.sheetnames # ['Sheet']
当我们打开一个Excel表格,会看到上次我们保存的表。这个表是活动状态的。我们可以使用Workbook对象中的active属性来获取当前活跃的工作表(Worksheet)。
ws = wb.active
ws就是我们要操作的表了。
访问ws的title属性,可以获取或修改表名。
ws.title # 'Sheet'
ws.title = "demo"
使用title给这张表重命名。
按名字读取Excel中的表(使用Workbook对象的wb["sheet_name"]方法选定工作表):
ws = wb["sheet_name"]
按Excel中的表的顺序读取Excel中的表:
ws = wb[wb.sheetnames[0]] # 读取Excel里的第一张表
删除一张表,使用Workbook中的remove_sheet()方法:
wb.remove_sheet(ws1)
复制一张表,使用Workbook中的copy_worksheet()方法:
ws2 = wb.copy_worksheet(ws)
wb.sheetnames # ['demo', 'demo Copy']
操作单元格
每个单元格都是一个Cell对象。
访问单元格,需要使用坐标,坐标的表示方式有两种,一种是使用字符串,如‘A1’,表示的是第一列,第一行。。另一种就是使用标准得坐标如,column=1, row=1,利用ws中的cell方法来第一行第一列的单元格。访问单元格的方式是使用如ws['A1'], 即表变量[坐标]
ws['A1'] = 0
ws.cell(row=1, column=1, value=0)
多单元格访问
ws['A1':'C2']
ws['C:D']
向表中写入大量数据
for i in range(1, 20):
for j in range(1, 20):
ws.cell(i,j,value=i*j)
需要注意的是,使用cell时,坐标至少是1,也就是说,大于0的整数。
合并、拆分单元格
ws.merge_cells('A1:B2') # 合并单元格
ws.unmerge_cells('A1:B2') # 拆分单元格
保存Excel文件,下句在当前目录保存Excel文件,文件名为example.xlsx ,如果已存在将替换之
wb.save("example.xlsx")
例1、运行下面的代码将本源码文件(ExcelTest.py)所在的目录中生成名为test.xlsx的文件
#模块导入
import openpyxl
from openpyxl import Workbook
#创建一个workbook对象,含有一个工作表可以active
wb=Workbook()
#读取这张表
ws = wb.active
#创建sheet名字
ws.title = 'sheet1'
#为A1单元格赋值
ws['A1']='圆周率'
ws['A2']=3.14
#添加一个工作表
ws2=wb.create_sheet(title="Data")
#选定工作表
ws3 = wb["Data"]
#为单元格赋值
ws3['A1']='呵呵'
#在当前目录保存文件,文件名为test.xlsx ,如果已存在将替换之
wb.save( 'test.xlsx')
运行结果参见下图:
Openpyxl官网文档(英文):
https://openpyxl.readthedocs.io/en/stable/index.html
使用openpyxl进行图表处理的例子
https://openpyxl.readthedocs.io/en/stable/charts/bar.html