在日常工作中,可能会有一些重复无聊的任务,比如说,从 Excel 或数据库中收集一些数据,设置相应的数据格式并做成报表。
类似这种重复无聊的任务,我们完全可以交给 Python 去自动完成,只要第一次把 Python 代码写好,以后就可以一键完成,省时省力,还不容易出错,这是提升工作质量和工作效率的利器,让我们能够腾出时间和精力,去做更有价值的事情。
1. 安装和导入模块
以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装:

pip install openpyxl

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

# 导入库
import openpyxl
# 查看版本
openpyxl.__version__

如果该模块正确安装,那么会输出版本号,假如你在使用过程中遇到问题,可以查阅官方文档。
2. 读取和处理数据
为了演示用 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


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

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自动生成Excel报表 :https://mp.weixin.qq.com/s/niZ1_ORP5QRJ9xR-oR0wpw

用Python自动生成Excel报表相关推荐

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

    作者 / 来源:林骥(ID:linjiwx) 01 安装和导入模块 以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装: ...

  2. python自动生成excel报表

    1.将SQL语句查询的内容,直接写入到excel报表中,以下为全部脚本.要求:此版本必须运维在windows平台,并且安装了excel程序,excel版本不限. python版本为2.7 if b 判 ...

  3. 【定制开发】【M11】Python采集数据源,自动生成Excel报表:避免人力浪费,提高工作效率

    目录 一.背景 二.采集数据源 2.采集[氮氨]数据 3.采集[COD 化学需氧量]数据 4.采集[总氮]数据 三.输出Excel内容样式 1.输出文件命名格式 2.文件内容格式详述 四.解决方案 1 ...

  4. 用 Python 自动生成 Excel 数据报表~

    大家好,我是小z 今天给大家来一波实战,使用Python自动化生成数据报表! 从一条条的数据中,创建出一张数据报表,得出你想要的东西,提高效率. 主要使用到pandas.xlwings以及matplo ...

  5. 用Python自动生成Excel数据报表!

    大家好,我是辰哥~ 点击下方名片关注和星标『Python研究者』!

  6. python自动生成word报表之使用win32com插入自带可编辑的图表

    解决问题 在做word报告自动生成过程中,想使用python向word中插入office自带的可以编辑的图表,查看python-docx v0.8.10文档还未实现该功能,考虑使用win32com. ...

  7. 读取excel日期 c++_实例9:用Python自动生成Excel档每日出货清单

    公司研发部门每年都需要向税务局提交一份出货清单,以申报研发费用.要求按日期来汇总,每日只要有出货,就需要一份出货单.出货总表包含数百条出货记录.假设一年有200天都出过货,那按照常规的方法,需要从总表 ...

  8. oracle生成excle报表,oracle自动生成excel报表(时间为变量,条件含变量)

    目的:unix+oracle下每日生成前一天某统计报表,以一张统计表为例. ----在unix下执行sh脚本---- sqlplus -s username/password < @/home/ ...

  9. python生成excel模板_实例9:用Python自动生成Excel档每日出货清单

    公司研发部门每年都需要向税务局提交一份出货清单,以申报研发费用.要求按日期来汇总,每日只要有出货,就需要一份出货单.出货总表包含数百条出货记录.假设一年有200天都出过货,那按照常规的方法,需要从总表 ...

最新文章

  1. Excel数据拆分-分列
  2. linux权限补充:rwt rwT rws rwS 特殊权限
  3. Java程序员从笨鸟到菜鸟之(八十七)跟我学jquery(三)jquery动态创建元素和常用函数示例
  4. ECshop中defined('IN_ECS')的实现原理
  5. npm : 无法加载文件 D:\Program Files\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。
  6. 1056. Mice and Rice (25)
  7. oracle 控制html输出样式,Oracle之sqlplus输出到html
  8. sweetalert
  9. JavaScript下载本地文件
  10. 浪潮 服务器数据安全管理系统,浪潮SSC运维安全管控系统
  11. apkg格式怎么打开_jpg怎么转换成pdf?再不学就晚了
  12. 潘赟九宫格写作总结(精简背诵版)
  13. linux实用技巧:ubuntu18.04安装配置ibus中文输入法
  14. 宏碁电脑怎么快速重装Win11系统?
  15. ORB_SLAM2源码阅读(一)概要
  16. JavaScript Sets
  17. 国二c语言程序,国家计算机二级c语言题库及答案
  18. TCP/IP协议及配置
  19. 攻防世界——xff_referer
  20. 台湾D-Link全景安全公司证书被盗,且被APT组织blacktech利用

热门文章

  1. 美团王慧文:顶尖高手,如何做决策?
  2. HDU2102(KB2-I)
  3. 面试官:这波HTTP究极combo,你顶得住吗?
  4. python conda安装与使用教程
  5. 计算机桌面下方标图,电脑下方怎么设置显示桌面图标
  6. java手机刷机精灵,按钮救星(按键精灵所有者读写权限)
  7. Tailwind CSS
  8. RBP系统管理之服务器参数管理
  9. 共享文件与打印机设置
  10. 建木DevOps流程的快速运用