很多周报内容都差不多,区别就是名字和几行数据。这种"换汤不换药"的重复活,最该交给 Python。配套代码关注后回复「实战02」领取,省得逐行手敲。
报告用 python-docx,专门建/改 Word(.docx),免费开源,不依赖本机 Office。
pip install python-docx数据通常来自一张 Excel,用 openpyxl 读进来(上篇讲过,这里快速复习):
from openpyxl import load_workbookwb = load_workbook("周报数据.xlsx")ws = wb.activerows = [r for r in ws.iter_rows(min_row=2, values_only=True)]print("共读到", len(rows), "条数据")
values_only=True只拿值不带格式,干净利落。别急着批量,先把"一份"跑通:
from docx import Documentdoc = Document()doc.add_heading("项目周报", level=0)doc.add_paragraph("汇报人:张三")doc.add_heading("一、本周完成", level=1)doc.add_paragraph("1. 完成登录模块开发")doc.save("周报_张三.docx")
把"一份"包进循环,名字、内容自动换:
from docx import Documentrows = [["张三", "完成登录模块", "开发支付模块"],["李四", "修复数据同步", "优化接口性能"]] # 实际从 Excel 读for name, done, plan in rows:doc = Document()doc.add_heading(f"{name} 的周报", level=0)doc.add_paragraph(f"汇报人:{name}")doc.add_heading("一、本周完成", level=1)doc.add_paragraph(done)doc.add_heading("二、下周计划", level=1)doc.add_paragraph(plan)doc.save(f"{name}_周报.docx")
每次循环都新建 Document(),保证每份报告干净不串味。第一次先用 2 条试运行,确认对得上再上全量。
报告里想塞表格也简单:
table = doc.add_table(rows=1, cols=3)hdr = table.rows[0].cellshdr[0].text, hdr[1].text, hdr[2].text = "任务", "负责人", "状态"for t in [["登录", "张三", "完成"], ["支付", "李四", "进行中"]]:c = table.add_row().cellsc[0].text, c[1].text, c[2].text = t
老周带 8 人小组,每周五最头疼收周报,以前先发模板、再一个个改格式,常弄到晚上八九点。我给他搭了这个循环脚本,数据从团队在线表导成 Excel,一键生成 8 份。他第一次跑完盯着文件夹愣了三秒:"这就完了?"现在他周五下午做真正的管理,上个月还靠这个交了份 8 人月报合集被点名表扬。
如果今天的脚本帮你省了 1 小时,点【关注】,下周教你生成完自动发邮件——报告出炉直接飞进对方邮箱。
回复「实战02」领 10 个可直接跑的脚本,Word 报告生成全套都打包在里面,复制就能用。
