Openpyxl是Python的第三方库,专门用来读写.xlsx的文件(即Excel文件)。可以用来弥补Pandas的部分不足,Pandas处理好的数据保存为Excel文件后是无任何美化的,有待提升。我们可以在Python处理完数据后,直接用Openpyxl库进行处理,直接到导出右边这副图的成品。这样,Python最终处理的数据质量更高了。
from openpyxl import load_workbook(),Workbook()wb=load_workbook(路径) --读取Excel文件wb=Workbook() --创建一个Excel文件ws=wb.active --激活默认工作表(自带)ws=wb.create_sheet() --增加一个工作表#给第1行和第一列的元格,写入为2ws.cell(row=1,column=1).value=2ws['A1']='姓名'wb.save(路径) --文件保存到路径
2.对单元格进行处理,处理单元格字体、对齐方式、数字格式、条件格式,以及对单元格进行插入/删除/隐藏/合并等from openpyxl.stylesimport font,PatternFill,Border,Side,colors
font-字体/字号/加粗/字体颜色(name,size,bold,color)PatternFill-背景填充(小油漆桶)(fill_type,start/end_color)from openpyxl.styles import Alignment-cell.alignment=Alignment() --对齐方式+自动换行ws.merge_cell('A1:C1')--合并单元格A1-C1ws.unmerge_cell('A1:C1')--取消合并单元格A1-C1
cell.number_format='0.00%' -百分比格式
条件格式:from openpyxl.formatting.rule import CellIsRulefrom openpyxl.styles import PatternFillrule=CellIsRule(operator='')ws.conditional_formatting.add('区域',rule)
ws.column_dimensions['A'].width=15--列宽ws.row_dimensions[1].height=22--行高ws.insert_rows(2),在第2行插入1行ws.insert_cols(3,2),在第3列插入2列ws.delete_rows(2), 删除第2行ws.delete.cols(5), 删除第5列
流程:引入模块、准备坐标系、添加数据、其他元素、添加到工作簿中、保存。#引入图形模块from openpyxl.chart import BarChart,LineChart#准备坐标系C1=BarChart()#添加数据 #数据值data_ref=Reference(ws,col=2,min_row=1,max_row=7) #分类名称cats_ref=Reference(ws,col=1,min_row2,max_row=7)#将数据添加到数据里c1.add_data(data_ref,)c1.set_categories(cat_ref)#其他元素设定c1.title=''#添加工作簿ws.add_chart(c1,'A7')#保存wb.save(路径名称)
制备出来的图表,和正常用Excel做的图表效果一样。
1.Python操作Excel画的图表,可以在Excel里直接编辑,跟用Excel画的效果是一样的。Python自己通过matplotlib,seaborn画的图表可以静态插入Excel的工作表中,无法编辑。这也是用openpyxl这个库的优点。2.openpyxl库无法对数据进行排序和排序,需要用到Pandas去实现。3.使用openpyxl库时,运行时不会立刻改变原文件,必须使用wb.save()保存后,文件才会发生变化。4.还有一个库是xlwings,它是实时操作Excel的,每一行代码立刻在Excel里生效的,相当于用python代替点鼠标,写VBA.