1.openpyxl简介
openpyxl是一个开源项目,openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到其它库(如:xlrd、xlwt等),这是openpyxl比较其他模块的不足之处。openpyxl是一款比较综合的工具,不仅能够同时读取和修改Excel文档,而且可以对Excel文件内单元格进行详细设置,包括单元格样式等内容,甚至还支持图表插入、打印设置等内容,使用openpyxl可以读写xltm, xltx, xlsm, xlsx等类型的文件,且可以处理数据量较大的Excel文件,跨平台处理大量数据是其它模块没法相比的。因此,openpyxl成为处理Excel复杂问题的首选库函数。
2.环境准备
安装python https://www.python.org/ 下载地址
安装openpyxl模块 使用命令 pip install openpyxl
(对于开发人员来说我们会在一些成熟的IDE(例如Pycharm,Visual Studio)中进行代码的编辑,但是由于本次培训只是简单的进行这方面技术的介绍,所以直接使用了自带的编辑器)
3.简单使用
因为要使用openpyxl所以首先要引入模块:
>>> from openpyxl
然后我们可以通过Workbook()函数建立一个工作簿对象,这个工作簿对象包含了excel文件里的所有信息,通过运行下列代码我们可以创建一个excel文件:
wb = openpyxl.Workbook()
wb.create_sheet("sheet1",0)
wb.create_sheet("sheet2",0)
wb.save("test.xlsx")
通过函数的名称我们可以直观的明白它的作用,建表操作create_sheet(表名,表的位置),保存操作save(文件名)
通过运行上述代码,我们获得了一个test.xlsx文件,因为我们在保存它的时候没有给它赋予太多的属性所以它只包含三张空表【sheet2,sheet1,sheet】,现在我们通过这个文件来进行读取excel信息的操作
wb = openpyxl.load_workbook("test.xlsx") #加载文件到对象
wb.sheetnames #文件中的所有表名
4.对Excel的各种写操作
sheet1 = wb['sheet1']
sheet1['A1']="i am sheet1" #填写sheet1的A1单元格内容
sheet1['A1'].font=openpyxl.styles.Font(color="FF0000") #设置主体颜色
sheet1['A1'].font=openpyxl.styles.Font(color="FF0000",size=15,bold=True) #字体样式设置,还有其他属性可以查看Font对象
sheet1['A1'].fill=openpyxl.styles.PatternFill("solid",fgColor="00FF00")#设置背景颜色
接下来我们我们进行一个排序操作,通过查看官方文档可以知道排序的函数为ws.auto_filter.add_sort_condition(区间,正逆序)
wb = openpyxl.load_workbook("test.xlsx") #加载文件到对象
sheet2 = wb['sheet2']
i = 1
while i<10 :
sheet2["B"+str(i)] = i
i+=1
sheet2.auto_filter.ref="B1:B10"
sheet2.auto_filter.add_sort_condition("B1:B10",descending=True)
sheet2.auto_filter.add_filter_column()
wb.save("test.xlsx")
通过上述操作会有逆序图标出现,但是实际并没有执行排序操作。这会将相关指令添加到文件中,但实际上不会过滤或排序,这是官方描述.(发现通过excel软件里数据里的按钮重新应用来使排序生效)。
5.对Excel的各种读操作
wb = openpyxl.load_workbook("test.xlsx") #加载文件到对象
sheet2 = wb['sheet2']
#读取B1:B10的值
cells=sheet2["B1":"B10"]
for cell in cells:
print(cell[0].value)
sheet2.max_column #最大列数
sheet2.max_row #最大行数
sheet1["A1"].fill #背景颜色对象
sheet["A1"].font #字体对象
6.简单使用例子
将上述文件中字母的单元格背景置成颜色1,将,偶数的单元格背景置成颜色2,奇数的单元格背景置成颜色3
import openpyxl
letters="ABCDEF"
color1 = openpyxl.styles.PatternFill("solid", fgColor="ff0000")
color2 = openpyxl.styles.PatternFill("solid", fgColor="00ff00")
color3 = openpyxl.styles.PatternFill("solid", fgColor="0000ff")
wb = openpyxl.load_workbook("test2.xlsx") # 加载文件到对象
sheet1 = wb['Sheet1']
for row in sheet1.rows:
for cell in row:
if str(cell.value) in letters:
cell.fill = color1
else:
if cell.value % 2==0:
cell.fill = color2
else:
cell.fill = color3
wb.save("test3.xlsx")
完结
网友评论