pandas和openpyxl实现报表自动化
本文记录自己最近自学的报表自动化,主要用到的工具是python的pandas和openpyxl库
当然pandas库主要用来进行数据清洗(筛选、分组、统计等)具体操作本文不做说明
本文的重点在于说明如何将已经整理好的数据(pandas的Dataframe形式)写到excel中
openpyxl的常用操作
创建一个Workbook类
from openpyxl import *
wb = Workbook()
创建一个sheet对象,并命名为”sheet1”
sheet1 = wb.create_sheet("sheet1")
这里的“sheet1”相当于excel里工作表的表名
设置行宽、列高
sheet1.column_dimensions["A"].width = 27
sheet1.row_dimensions[1].height = 35
给单元格赋值
sheet1.cell(1,1).value = 100
sheet1.cell(2,2).value = 200
给单元格设置格式
from openpyxl.styles import *
mystyle = NamedStyle(name="mystyle")
mystyle.font = Font(name=u'微软雅黑',bold=True,size=10,color='FFFFFF')
mystyle.fill = PatternFill(fill_type='solid',fgColor='E1295C')
bd = Side(style='thin', color="000000")
mystyle.border = Border(left=bd, top=bd, right=bd, bottom=bd)
mystyle.alignment = Alignment(horizontal='center',
vertical='center',
text_rotation=0,
wrap_text=True,
shrink_to_fit=False,
indent=0)
可以先创建一个NamedStyle的对象,然后根据需求设置其属性
font(字体类):字号、粗细、颜色、下划线等
fill(填充类):填充模式,颜色
border(边框类):设置单元格边框
alignment(位置类):对齐方式
number_format(格式类):数据格式
protection(保护类):写保护
这里用到了前四个(应该最常用了)
然后通过这句代码
设置指定位置的单元格格式
sheet1.cell(1,1).style = mystyle
保存/生成excel文件
wb.save("test.xlsx"