批量处理报告
自动生成报告
批量处理报告 是 CoddyKit 上的免费 Python Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。
自动生成重复性报告
openpyxl 的真正价值在于自动化:无需手动操作即可生成数十份相似的报告。例如,可以为每个地区生成月度销售表,或为每个客户生成一个汇总文件。
其模式是:遍历数据组,为每组创建一个工作簿,然后使用唯一名称保存。
对数据分组
批量报告从记录分组开始,例如按地区分组。在进行任何 Excel 操作之前,使用标准 Python 功能即可清晰地完成这一步。
records = [
{'region': 'North', 'sales': 100},
{'region': 'South', 'sales': 80},
{'region': 'North', 'sales': 120},
]
groups = {}
for r in records:
groups.setdefault(r['region'], []).append(r['sales'])
for region, sales in groups.items():
print(region, sales, 'total', sum(sales))每组一个文件
对于每个分组,您都要创建一个工作簿,写入行,然后使用根据分组键生成的名称保存。循环体就是您为单份报告编写的相同代码,只是重复执行。
安全的文件名
分组键可能包含文件名中不允许使用的字符。请先将其规范化,确保保存操作不会失败。这与其他地方使用的文件名规范化思路相同。
import re
name = 'North/West Region 2024'
safe = re.sub(r'[^A-Za-z0-9]+', '_', name).strip('_')
print('report_' + safe + '.xlsx')可重复使用的模板函数
将报告布局提取到一个接收数据并返回工作簿的函数中。在循环中调用它,可以保持每份报告的一致性,并让代码符合 DRY(不要重复自己)原则。
该函数可以设置表头、写入行、添加总计和样式,然后返回 wb。
添加汇总行
大多数报告都以总计结束。请在 Python 中或使用 Excel 公式计算汇总值,并将它们写入最后一行。这里我们会计算汇总值。
sales = [100, 120, 90, 110]
summary = {
'count': len(sales),
'total': sum(sales),
'average': sum(sales) / len(sales),
'max': max(sales),
}
for k, v in summary.items():
print(k.ljust(8), v)一个文件中的多个工作表
有时,每个分组对应一个工作表的单个文件比多个文件更好。遍历各个分组,并调用 wb.create_sheet(title=group_name),将每个分组写入自己的工作表。最后只保存一次。
整理输出文件夹
将报告写入带日期的输出目录,这样不同的运行就不会相互覆盖。使用 os.makedirs(path, exist_ok=True) 安全地创建该目录,然后将文件名拼接到其中。
import os
base = 'reports'
run_date = '2026-05-30'
out_dir = os.path.join(base, run_date)
path = os.path.join(out_dir, 'north.xlsx')
print('Would create dir:', out_dir)
print('File path:', path)批处理中的错误处理
在较长的批处理中,一个有问题的分组不应阻止其余分组。对每份报告使用异常捕获结构,记录失败情况,然后继续执行。能完成的部分运行优于中途崩溃的完整运行。
调度任务
脚本运行正常后,请安排它(使用 cron、任务计划程序或持续集成任务)每晚或每月运行。这样,同一份代码就能自动生成最新报告,无需人工干预。
记录进度
长批处理适合输出进度。打印或记录正在处理的分组以及剩余数量,这样您就能区分运行缓慢和运行卡住的情况。使用一个与总数对照的简单计数器即可。
日志记录还会保存哪些报告已成功完成的记录,以便您只重新运行失败的部分。
快速检查
测试您对批处理自动化的了解。
回顾
现在您已经可以自动生成报告:
- 整理数据,然后循环处理,为每个分组创建一个工作簿(或一张工作表)
- 将布局提取为可复用的模板函数
- 清理文件名,并将文件写入带日期的输出文件夹
- 添加汇总行,对每份报告使用异常捕获结构,并调度脚本
这样就能将数小时的手动电子表格工作变成一个命令即可运行的任务。
常见问题解答
「批量处理报告」课时是免费的吗?
是的 — 「批量处理报告」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。
「批量处理报告」这节课中我会学到什么?
自动生成报告 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Python Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「批量处理报告」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Python Academy 课中编写并运行代码吗?
能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 读取工作簿
- 写入和设置单元格样式
- 公式与图表
- 批量处理报告