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

01 安装和导入模块

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

pip install openpyxl

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

# 导入库

import openpyxl

# 查看版本

openpyxl.__version__

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

02 读取和处理数据

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

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

# 读取数据

import pandas as pd

df = pd.read_excel('../data/Online Retail.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 设置和保存报表

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

from openpyxl.utils.dataframe import dataframe_to_rows

from openpyxl.styles import Font, Color, NamedStyle, Border, Side, PatternFill, Alignment, numbers

# 创建工作簿

wb = openpyxl.Workbook()

# 激活工作表

ws = wb.active

# 重命名工作表

ws.title = '每日销售额'

# 把数据写入工作表

for row in dataframe_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)

# 应用标题样式

for cell in ws[1]:

cell.style = mytitle

# 对表格区域加边框

from openpyxl.utils import get_column_letter, column_index_from_string

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

for row in table_range:

for cell in row:

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)

# 设置对齐格式

for cell in ws['A']:

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

# 设置日期格式

for cell in ws['A']:

cell.number_format = numbers.FORMAT_DATE_YYYYMMDD2

# 设置数字格式

for cell in ws['B']:

cell.number_format = numbers.BUILTIN_FORMATS[3]

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

# 保存为新的表格

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

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

小结

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

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

python自动汇总表格_用Python自动生成Excel报表相关推荐

  1. java formula one 用法_使用Formula One生成Excel报表-

    [ 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据 最近开发 ...

  2. python自动做表格_用Python做自动化的表格处理(批量智能替换) - Python趣用之法2...

    # 读取表格组件 import xlrd # 写入列表组件 import xlwt # 表格自动化处理 def table(): # 打开并且拿到需要的表格 number = xlrd.open_wo ...

  3. python读取pdf表格_【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比...

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  4. python 提取pdf表格_用Python提取pdf文件中的表格数据

    本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...

  5. python读取pdf表格_[转]Python 解析 PDF 文本和表格的四大方法介绍

    Python 解析 PDF 文本和表格的四大方法介绍 == code for paper and NSFC Proj. parsing==: https://gitee.com/sonica/pdf_ ...

  6. 使用python处理wps表格_用python写wps的excel文件 | 学步园

    参考了网上的一些帖子,试了一下用python写wps的excel文件(需要windows操作系统,安装了wps的表格处理程序,安装了pywin32)--我安装的是WPS个人版,可以免费使用的. imp ...

  7. python批量分析表格_示例python 批量操作excel统计销售榜品牌及销售额

    示例统计销售榜品牌及销售额 importpandas as pdimportnumpy as npimportos os.chdir('F:\\50mat\源数据1000张表格') name= '户外 ...

  8. python读取cad表格_使用Python读取AutoCAD DXF文档

    作为<使用Python创建AutoCAD DXF文档>的姊妹篇,本文介绍用Python读取DXF ============================================= ...

  9. 用Python自动生成Excel报表

    在日常工作中,可能会有一些重复无聊的任务,比如说,从 Excel 或数据库中收集一些数据,设置相应的数据格式并做成报表. 类似这种重复无聊的任务,我们完全可以交给 Python 去自动完成,只要第一次 ...

最新文章

  1. 用RadASM 开发窗口程序
  2. linux系统服务设置命令--chkconfig命令参数及用法详解
  3. 滤波 放电速度比充电慢 模电
  4. Windows下对文件做MD5校验
  5. 分布式技术原理(一):分布式的三围
  6. 前端培训课随感,传智、千锋、尚硅谷、渡一
  7. 如何预防计算机病毒英语作文,电脑病毒的英文作文
  8. android paint 圆角 绘制_android 绘制椭圆 圆角矩形 详细解析
  9. Vue粒子特效使用教程(vue-particles插件)
  10. servlet登录验证并返回错误信息
  11. iOS开发技巧-国际化(Localization),只看一篇就够了
  12. 机器学习模型——回归模型
  13. web前段网图分类规划
  14. 魔兽怀旧服务器维护副本是否重置,魔兽世界怀旧服副本重置时间 魔兽世界怀旧服副本重置时间详解...
  15. 夜游,今年中秋的重头戏
  16. 街头手提电脑交易骗术揭秘
  17. 12306余票查询(五)——网页模板制作
  18. FLASH透明效果代码
  19. linux下安装python3报错_linux安装python3
  20. Android Spinner

热门文章

  1. Google地图开发初级篇
  2. 搭建vpn linux,vpn在linux下搭建
  3. 转:Mybatis与JDBC批量插入数据库哪个更快
  4. 如何将ipynb文件转换转换为py文件?
  5. 佛教哲学 学习笔记-07-新旧唯识-唯识学-中
  6. Mysql定义DELETE操作触发器,将删除数据存入历史表
  7. BusyCal for Mac(任务日历工具)
  8. JFreeChart图形开发包学习笔记
  9. 2022-2028全球军用弩行业调研及趋势分析报告
  10. 【机器学习 基本概念】监督学习、无监督学习、半监督学习与强化学习