900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python自动汇总表格_用Python自动生成Excel报表

python自动汇总表格_用Python自动生成Excel报表

时间:2023-04-05 04:35:41

相关推荐

python自动汇总表格_用Python自动生成Excel报表

作者 / 来源:林骥(ID:linjiwx)

01 安装和导入模块

以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装:

pipinstallopenpyxl

要测试 openpyxl 是否正确安装,可以在 Jupyter Lab 中运行以下代码:

#导入库

importopenpyxl

#查看版本

openpyxl.__version__

如果该模块正确安装,那么会输出版本号,假如你在使用过程中遇到问题,可以查阅官方文档。

02 读取和处理数据

为了演示用 Python 自动生成 Excel 报表,我从网上找了一个数据集,是一家跨国公司的 54 万多行在线零售业务的交易数据,你可以进入公众号「林骥」的后台,回复「零售」两个字,获取该数据集的完整下载链接。

把这个数据文件保存到代码上级目录的 data 文件夹,然后用 Pandas 读取它:

#读取数据

importpandasaspd

df=pd.read_excel('../data/OnlineRetail.xlsx')

df

其中每一列代表的含义如下:

InvoiceNo:发票编号

StockCode:产品代码

Description:产品名称

Quantity:产品数量

InvoiceDate:开票时间

UnitPrice:产品单价

CustomerID:客户编号

Country:国家名称

为了统计每天的销售额,我们先在数据中增加两列:日期和销售额,然后用函数实现汇总:

#从时间列中提取日期

df['日期']=df.InvoiceDate.dt.to_period('D').astype(str)

#计算销售额

df['销售额']=df.Quantity*df.UnitPrice

#汇总每天的销售额

df_daily=pd.DataFrame(df.groupby('日期')['销售额'].agg('sum')).reset_index()

df_daily

03 设置和保存报表

接下来,我们对表格进行相应的设置,包括:重命名工作表、把数据写入工作表、自定义标题和表格边框样式、设置行高和列宽、不显示网格线、冻结窗格、自动筛选、设置日期和数字格式等等。

fromopenpyxl.utils.dataframeimportdataframe_to_rows

fromopenpyxl.stylesimportFont,Color,NamedStyle,Border,Side,PatternFill,Alignment,numbers

#创建工作簿

wb=openpyxl.Workbook()

#激活工作表

ws=wb.active

#重命名工作表

ws.title='每日销售额'

#把数据写入工作表

forrowindataframe_to_rows(df_daily,index=False,header=True):

ws.append(row)

#创建自定义的标题样式

mytitle=NamedStyle(name='mytitle')

mytitle.font=Font(bold=True,size=11,color='FFFFFF')

bd=Side(style='thin',color='A6A6A6')

mytitle.border=Border(left=bd,top=bd,right=bd,bottom=bd)

mytitle.fill=PatternFill('solid',fgColor='00589F')

mytitle.alignment=Alignment(horizontal='left',vertical='center')

wb.add_named_style(mytitle)

#创建自定义表格边框样式

myborder=NamedStyle(name='myborder')

myborder.font=Font(bold=False,size=11,color='000000')

bd=Side(style='thin',color='A6A6A6')

myborder.border=Border(left=bd,top=bd,right=bd,bottom=bd)

myborder.alignment=Alignment(vertical='center')

wb.add_named_style(myborder)

#应用标题样式

forcellinws[1]:

cell.style=mytitle

#对表格区域加边框

fromopenpyxl.utilsimportget_column_letter,column_index_from_string

table_range=ws['A2:'+get_column_letter(ws.max_column)+str(ws.max_row)]

forrowintable_range:

forcellinrow:

cell.style=myborder

#设置行高和列宽

ws.row_dimensions[1].height=26

ws.column_dimensions['A'].width=15

ws.column_dimensions['B'].width=12

#设置不显示网格线

ws.views.sheetView[0].showGridLines=False

#冻结窗格

ws.freeze_panes='A3'

#自动筛选

ws.auto_filter.ref='A1:'+get_column_letter(ws.max_column)+str(ws.max_row)

#设置对齐格式

forcellinws['A']:

cell.alignment=Alignment(horizontal='center',vertical='center')

#设置日期格式

forcellinws['A']:

cell.number_format=numbers.FORMAT_DATE_YYYYMMDD2

#设置数字格式

forcellinws['B']:

cell.number_format=numbers.BUILTIN_FORMATS[3]

最后,保存自动生成的 Excel 报表文件:

#保存为新的表格

wb.save('../data/每日销售报表.xlsx')

打开这个新生成的 Excel 报表文件,其中的内容如下:

小结

本文介绍了用 Python 自动生成 Excel 报表的一种方法,从 openpyxl 模块的安装和导入,到读取和处理数据,再到设置和保存报表,只要你把数据源放在合适的位置,就能在 Jupyter Lab 中一键运行,自动生成相应的报表。

你完全可以根据自己的实际情况,修改数据源和报表格式等设置,充分发挥自己的创意,生成个性化定制的报表。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。