「AI Python 系列」第 01 栏 · AI 时代的 Python 办公自动化
全栏 18 篇 · 零成本跟完 🍃
品牌:梅雅达编程笔记
摘要: 一份合同模板要改50份发50个客户,手动复制粘贴改到眼花。本篇用python-docx读取Word模板,用AI填充变量内容,一段代码批量生成结构化文档。附模板生成脚本和三个实战场景,从通知信到合同到周报全覆盖。
开篇 · Word 文档自动化的真实痛点
你有没有遇到过这些活:
| 给 50 个客户发合同 | 复制模板 → 手动改甲方名/金额/日期 → 另存为 | 50 份 × 3 分钟 = 2.5 小时 |
| 生成周报 | 手动填本周完成/遇到问题/下周计划 | 格式不统一,忘写关键项 |
| 批量发通知信 | 改称呼 → 改内容 → 发邮件 | 称呼改错,发给张三的信写着"李四你好" |
| 从一页文字提取摘要写入报告 | 手动阅读 → 总结 → 写入 | 文字量大时容易遗漏 |
共同特征: 模板固定,内容变动。传统做法靠人手,慢且容易出错。
今天用 python-docx + AI 解决这个问题。
一、传统做法 vs AI 时代做法
传统做法:手动复制粘贴
打开模板.docx → 替换文字 → 另存为 → 重复50次
纯 Python 做法:python-docx 模板替换
from docx import Document
doc = Document("合同模板.docx")
for paragraph in doc.paragraphs:
paragraph.text = paragraph.text.replace("{甲方}", "梅雅达公司")
doc.save("合同_梅雅达.docx")
优点: 快,一次改一个变量。 缺点: 只能做字符串替换。如果需要根据情况生成不同条款内容,replace 搞不定。
AI 时代做法:python-docx + AI 内容生成
# AI 生成合同条款 → python-docx 写入
terms = client.chat_json("为甲乙双方生成一份软件外包合同条款…")
# AI 生成周报内容 → python-docx 写入
report = client.chat_json("根据以下工作要点生成周报…")
组合优势:
- python-docx 负责格式(字体、段落、标题、表格)
- AI 负责内容(条款、摘要、报告文本)
- 各干各的,谁也不抢谁的活
二、python-docx 速查
安装
pip install python-docx
创建文档
from docx import Document
from docx.shared import Pt, Inches
doc = Document()
# 标题
doc.add_heading("周报", level=1)
# 段落
doc.add_paragraph("本周完成了三个模块的开发。")
# 带样式的段落
p = doc.add_paragraph()
run = p.add_run("重点内容")
run.bold = True
run.font.size = Pt(14)
# 表格
table = doc.add_table(rows=3, cols=2)
table.cell(0, 0).text = "任务"
table.cell(0, 1).text = "状态"
doc.save("report.docx")
读取模板
doc = Document("模板.docx")
# 遍历段落
for paragraph in doc.paragraphs:
print(paragraph.text)
# 遍历表格
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
替换模板中的占位符
doc = Document("合同模板.docx")
replacements = {
"{甲方}": "梅雅达公司",
"{乙方}": "张三",
"{金额}": "30000元",
"{日期}": "2026年7月20日",
}
for paragraph in doc.paragraphs:
for old, new in replacements.items():
if old in paragraph.text:
paragraph.text = paragraph.text.replace(old, new)
doc.save("合同_梅雅达.docx")
注意: python-docx 替换文字时,如果占位符跨了多个 run(Word 内部的格式片段),简单 replace 可能找不到。实际代码中需要处理 run 级别的替换。我们的完整代码中做了这个处理。
三、实战 1:合同批量生成
场景
一份软件外包合同模板,需要为 5 个客户批量生成。每个客户的甲方名、项目名、金额、工期不同。AI 负责根据项目类型生成技术条款。
核心流程
读取合同模板 → 替换固定字段 → AI 生成技术条款 → 写入条款段落 → 保存
关键代码
from docx import Document
from llm_client import LLMClient
import json
client = LLMClient(provider="glm")
# 客户信息列表
clients = [
{"name": "梅雅达公司", "project": "电商小程序开发", "amount": "30000元", "days": "40天"},
{"name": "宏达实业", "project": "企业官网建设", "amount": "15000元", "days": "20天"},
# …
]
for c in clients:
doc = Document("合同模板.docx")
# 1. 替换固定字段
replacements = {
"{甲方}": c["name"],
"{项目}": c["project"],
"{金额}": c["amount"],
"{工期}": c["days"],
"{日期}": "2026年7月20日",
}
replace_in_doc(doc, replacements)
# 2. AI 生成技术条款
prompt = f"""为以下项目生成3条技术合同条款,输出JSON:
{{"terms": ["条款1", "条款2", "条款3"]}}
项目:{c['project']},金额:{c['amount']}"""
result = client.chat_json(prompt, temperature=0.3)
terms = json.loads(result)["terms"]
# 3. 写入条款
doc.add_heading("技术条款", level=2)
for term in terms:
doc.add_paragraph(term, style="List Number")
# 4. 保存
doc.save(f"合同_{c['name']}.docx")
四、实战 2:AI 周报生成
场景
输入一周的工作要点(散装文字),AI 生成结构化周报,直接写入 Word 文档。
关键代码
# AI 生成周报内容
prompt = """请根据以下工作要点,生成一份周报。
工作要点:修了3个bug、完成了订单模块重构、优化了数据库查询、参加了一次需求评审会
输出JSON:
{
"本周完成": ["…", "…", "…"],
"遇到问题": ["…", "…"],
"下周计划": ["…", "…", "…"]
}"""
result = client.chat_json(prompt, temperature=0.5)
report = json.loads(result)
# 写入 Word
doc = Document()
doc.add_heading("工作周报", level=1)
doc.add_paragraph("姓名:张三 日期:2026-07-15 至 2026-07-19")
for section in ["本周完成", "遇到问题", "下周计划"]:
doc.add_heading(section, level=2)
for item in report[section]:
doc.add_paragraph(item, style="List Bullet")
doc.save("周报_张三.docx")
AI 干的活: 理解散装要点 → 结构化归类 → 生成专业表述。 python-docx 干的活: 标题/段落/列表样式 → 保存为 .docx。
五、实战 3:批量通知信
场景
给 10 个员工发绩效通知,每个人的姓名、部门、绩效等级、评语不同。AI 负责根据绩效等级生成个性化评语。
关键代码
employees = [
{"name": "张三", "dept": "技术部", "level": "A", "score": 92},
{"name": "李四", "dept": "产品部", "level": "B", "score": 85},
# …
]
for emp in employees:
# AI 生成评语
prompt = f"""请为以下员工生成一段绩效评语(50字以内),语气正式但温暖。
姓名:{emp['name']},部门:{emp['dept']},绩效等级:{emp['level']},分数:{emp['score']}
只输出评语文字,不要输出其他内容。"""
comment = client.chat(prompt, temperature=0.5)
# 写入 Word
doc = Document("通知信模板.docx")
replace_in_doc(doc, {
"{姓名}": emp["name"],
"{部门}": emp["dept"],
"{等级}": emp["level"],
"{评语}": comment,
})
doc.save(f"通知_{emp['name']}.docx")
完整代码请评论区留言索取
预期输出(截选)
============================================================
Word + AI 文档自动生成
============================================================
============================================================
实战1:合同批量生成
============================================================
✅ 已生成合同模板:…/合同模板.docx
共 3 份合同待生成
✅ 生成:…/合同_梅雅达公司.docx
✅ 生成:…/合同_宏达实业.docx
✅ 生成:…/合同_星辰科技.docx
============================================================
实战2:AI 周报生成
============================================================
工作要点:修了3个bug、完成了订单模块重构…
✅ 周报已生成:…/周报_张三.docx
本周完成:3 条
遇到问题:2 条
下周计划:3 条
============================================================
实战3:批量绩效通知信
============================================================
✅ 已生成通知信模板:…/通知信模板.docx
共 4 封通知信待生成
✅ 张三(技术部)等级A → …/通知_张三.docx
评语:本季度在技术部表现优秀…
注意: 生成的 .docx 文件可以直接用 Word/WPS 打开查看。如果中文显示乱码,检查系统是否安装了中文字体。
📊 本篇成本透明栏
| API 调用次数 | 约 10 次(3合同条款 + 1周报 + 4通知信评语 + 重试约2次) |
| 消耗 Token | 约 15,000 tokens |
| 成本 | ¥0(GLM-4.7-Flash 永久免费) |
| 免费额度是否够 | ✅ 够用 |
| 商用估算 | ¥0(GLM)/ 约¥0.03(DeepSeek)/ 约¥0.05(Qwen) |
| 50份合同预估 | 约 5 分钟,成本 ¥0 |
练手改造题
改造 1(基础): 在周报生成中加入"工时统计"部分——让 AI 根据工作要点估算每项任务的耗时。
提示:在 JSON 输出中加 "工时统计": [{"task": "…", "hours": 8}] 字段。
改造 2(进阶): 给合同生成器加一个"条款自定义"功能——用户输入特殊需求(如"需要包含知识产权条款"),AI 根据需求生成对应条款。
提示:在 prompt 中加入用户输入的 extra_requirements 参数。
改造 3(挑战): 写一个"文档摘要提取器"——读取一个已有 .docx 文件(如一篇长报告),AI 生成 200 字摘要 + 5 个关键词,写入新文档。
提示:用 python-docx 读取全文,拼接后传给 AI 总结。注意长文本可能超过模型上下文限制,需要分段处理。
下期预告
Day 08 · PDF + AI:智能文档处理
Word 搞定了,接下来是 PDF。用 pdfplumber 提取文字,用 AI 做智能摘要、信息提取、表格识别。从"Ctrl+C 整本 PDF"升级到"AI 帮你读 PDF"。
📚 资源与工具(文末合规集中)
- python-docx 官方文档: https://python-docx.readthedocs.io/
- python-docx 中文教程: https://python-docx.readthedocs.io/en/stable/
- 智谱开放平台(GLM,免费 API Key): https://open.bigmodel.cn/
- 本专栏配套代码: CSDN 下载区(每篇更新)
🍃 作者的话
梅雅达编程笔记,专注 Python + AI 办公自动化实战教程。
Word + AI 的核心模式是分工:python-docx 管格式,AI 管内容。这个思路在后面的 PDF、PPT 章节也通用。
实际接活时,合同批量生成是最常见的需求。很多甲方连模板都给你了,你只需要写个替换脚本 + AI 填充就交付了。按份收费,一份 5 块钱,50 份就是 250——而你的代码跑完只要 5 分钟。
下一篇 Day 08,PDF + AI,处理那些"不好复制"的文档 🍃
往期回顾
Day 01 · 为什么 2026 年办公自动化得“AI 化“了
Day 02 · 环境搭建:一套装备打天下
Day 03 · Prompt 工程 5 大心法
Day 04 · LLM API 横评 已被AI编程社区收录
Day 05 · 让 AI 输出结构化数据:告别“偶尔给你一段散文“
Day 06 · Excel + AI:让电子表格变“聪明“
专栏推荐
- 「AI Python 系列」第 01 栏 · AI+办公自动化(连载中)
- 「AI Python 系列」第 02 栏 · AI+数据可视化(连载中)
- 「AI Python 系列」第 03 栏 · Python 爬虫实战(连载中)
资源领取
- 关注作者获取本栏完整代码和数据集
原创声明:本文为梅雅达编程笔记原创作品,未经允许不得转载。




