openpyxl库介绍openpyxl是一个Python库,用于读/写Excel2010xlsx/xlsm/xltx/xltm文件Excel文件下面是一些基本定义:Excel电子表格文档称为工作簿。单个工作簿保存在扩展名为.xlsx的文件中。每个工作簿可以包含多个工作表。安装openpyxl模块openpyxl是一个第三方模块,必须先安装才能用于处理Excel文件。使用以下命令安装$pipinstallopenpyxl创建工作簿导入openpyxl的Workbook类即可创建工作簿(workbook)。例如:>>>fromopenpyxlimportWorkbook>>>wb=Workbook()创建工作簿后,必须至少有一个工作表。可以使用Workbook.active属性获取:>>>ws=wb.active默认情况下,该方法获取第一个工作表来创建新的工作表,可以使用Workbook.create_sheet()方法:>>>ws1=wb.create_sheet('Mysheet')>>>ws2=wb.create_sheet('Mysheet',0)>>>ws3=wb.create_sheet('Mysheet',-1)创建新工作表时,会自动分配了一个名称。值将按照(Sheet、Sheet1、Sheet2)的顺序赋值。但是,可以通过Worksheet.title属性更改此名称。ws.title="NewTitle"如果想查看工作簿中所有工作表的名称,可以通过Workbook.sheetname属性查看:>>>wb.sheetnames['Mysheet1','NewTitle','Mysheet2','Mysheet']当然也可以使用循环遍历:>>>forsheetinwb:...print(sheet)...处理数据创建工作簿和工作表后,您现在可以考虑修改单元格的内容。该单元格可以作为工作表的key直接访问:>>>c=ws['A1']此时会返回A1处的单元格,如果不存在则新建一个。这时候可以直接赋值:>>>ws['A1']=3除了用这个大写字母(表示列)外加一个数字(表示行)来访问单元格。也可以使用Worksheet.cell()方法直接使用行和列的表示法访问单元格:>>>a=ws.cell(row=3,column=1,value=8)访问多个单元格时需要访问多个cell时,可以使用slice方法。当访问一个区域时,可以参考下面的方法:>>>cell_range=ws['A1':'D3']当访问多行或多列时,可以使用下面的方法:>>>col_c=ws['C']>>>col_range=ws['C':'D']>>>row_10=ws[10]>>>row_range=ws[5:10]除了使用上面的切片方法。它也可以使用Worksheet.iter_rows()方法访问,它将逐行返回:>>>forrowinws.iter_rows(min_row=1,max_col=3,max_row=2):...forcellin排:。..print(cell)...<单元格“新标题”.A1><单元格“新标题”.B1><单元格“新标题”.C1><单元格“新标题”.A2><单元格“新标题”'.B2>同样还有Worksheet.iter_cols()方法,会逐列返回:>>>forcolinws.iter_cols(min_row=1,max_col=3,max_row=2):...forcellincol:...print(cell)...这里需要注意一点,Worksheet.iter_cols方法在只读模式下是不可用的。如果需要遍历文件中的所有行或列,可以考虑Worksheet.rows属性:>>>ws=wb.active>>>ws['C4']='HelloWorld!'>>>tuple(ws.rows)((,,),(,<单元格'Mysheet1'.B2>,),(,,),(,,))或Worksheet.columns属性:>>>tuple(ws.columns)((,,,),(,,<单元格'Mysheet1'.B3>,),(,,,))返回单元格的值如果只是需要返回工作表中单元格的值,可以使用Worksheet.values属性。该方法将遍历工作表中的所有行,但只返回单元格中的值。>>>forrowinws.values:...forvalueinrow:...print(value)...NoneNoneNoneNoneNoneNoneNoneNoneNoneHelloWorld!NoneHelloWorld!保存数据到文件和保存工作簿,可以使用Workbook对象的Workbook。save()方法:>>>wb.save('temp.xlsx')打开保存的文件,可以看到下面工作表的名字就是上面创建的表的名字。并使用上面的方法将内容插入到表中。加载文件加载文件时,可以使用openpyxl.load_workbook()方法打开一个本地存在的文件:>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('temp.xlsx')>>>wb2.sheetnames['Mysheet1','NewTitle','Mysheet2','Mysheet']补充插入时间>>>importdatetime>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('temp.xlsx')>>>ws=wb2.active>>>ws.title'Mysheet1'>>>ws['A1']=datetime.datetime.now()>>>ws['A1'].valuedatetime.datetime(2020,3,29,16,29,21,786731)>>>ws['A1'].number_format'yyyy-mm-ddh:mm:ss'使用公式直接将Excel公式赋值给某个单元格,格式为a字符串,如下:>>>ws['A2']='=SUM(1,1)'>>>ws['A2'].value'=SUM(1,1)'合并/拆分单元格时需要合并拆分单元格时,可以使用worksheet.merge_cells()方法和worksheet.unmerge_cells()方法:>>>ws.merge_cells('A2:B2')>>>#先合并A3:B3,然后尝试拆分Divide...ws.merge_cells('A3:B3')>>>ws.unmerge_cells('A3:B3')这一步加载图片依赖于Pillow库,所以使用前需要先安装Pillow库。>>>fromopenpyxl.drawing.imageimportImage>>>img=Image('k.jpg')>>>ws.add_image(img,'A5')>>>wb.save('temp_1.xlsx')以上使用结果如图所示,可以看出A1插入的时间已经生效。A2中显示的结果为2,标红的部分表示结果是使用这个公式得到的,也就是说公式插入也是有效的。同时可以看到A2:B2单元格已经合并了。最后插入一张图片。可以看到A5单元格中已经成功插入了一张图片。以上内容是关于openpyxl库处理Excel文件的简单使用。欢迎关注微信公众号《书所集录》 | | | | | | | | | | | | | | | | | | | | | | | | | | | | |