乐于分享
好东西不私藏

Python-21-Openpyxl(excel)

Python-21-Openpyxl(excel)
Openpyxl是Python的第三方库,专门用来读写.xlsx的文件(即Excel文件)。可以用来弥补Pandas的部分不足,Pandas处理好的数据保存为Excel文件后是无任何美化的,有待提升
Pandas导出
Openpyxl处理后
我们可以在Python处理完数据后,直接用Openpyxl库进行处理,直接到导出右边这副图的成品。这样,Python最终处理的数据质量更高了。

Excel的三级结构:
Excel文件=Excel工作簿→工作表→单元格
1.读取Excel文件/工作表/单元格
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)
Border,Side--边框(类型,颜色)
  • 对齐方式(组):
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行插入1ws.insert_cols(3,2),在第3列插入2ws.delete_rows(2), 删除第2ws.delete.cols(5), 删除第5列 
3.用制作图表
流程:引入模块、准备坐标系、添加数据、其他元素、添加到工作簿中、保存。
#引入图形模块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.
~~加油,有缘人。

Day 21
#Python#Excel,  #报表自动化
心定则平静,平静则睡得好,生活需要有定力。