欢迎光临
我们一直在努力

Day 07 · Word + AI:自动生成文档

「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 爬虫实战(连载中)

资源领取

  • 关注作者获取本栏完整代码和数据集

原创声明:本文为梅雅达编程笔记原创作品,未经允许不得转载。

赞(0)
未经允许不得转载:171主机测评 » Day 07 · Word + AI:自动生成文档
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址