共计 1745 个字符,预计需要花费 5 分钟才能阅读完成。
痛点背景
在日常开发中,我们经常需要将 ChatGPT 生成的文本内容整理成 Word 文档。传统的复制粘贴方式存在几个明显的效率瓶颈:

- 样式丢失问题:手动粘贴会导致原有格式(如代码块、标题层级)被破坏,每次都需要重新调整。
- 批量处理困难:当需要处理大量生成内容时,人工操作耗时且容易出错。
- 版本管理混乱:多人协作时,不同版本的文档难以追踪修改历史。
技术选型
常见的 Word 文档处理方案主要有三种:
- python-docx:纯 Python 库,无需安装 Office,轻量且跨平台
- Office API:功能强大但依赖 Office 安装,Windows 专属
- PyWin32:通过 COM 接口操作 Word,适合复杂场景但稳定性差
对于大多数开发者,python-docx 是最佳选择,因为它:
- 不需要安装 Office 软件
- 支持主流操作系统
- API 设计符合 Python 习惯
核心实现
基础文本插入
from docx import Document
from docx.shared import Pt, RGBColor
def add_text_to_doc(content: str, output_path: str):
try:
doc = Document()
paragraph = doc.add_paragraph()
run = paragraph.add_run(content)
# 设置字体样式
run.font.name = '微软雅黑'
run.font.size = Pt(12)
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
doc.save(output_path)
except Exception as e:
print(f'文档生成失败: {str(e)}')
表格与图片插入
def add_table(data: list[list[str]], output_path: str):
doc = Document()
table = doc.add_table(rows=1, cols=len(data[0]))
# 添加表头
hdr_cells = table.rows[0].cells
for i, header in enumerate(data[0]):
hdr_cells[i].text = header
# 添加数据行
for row in data[1:]:
row_cells = table.add_row().cells
for i, cell in enumerate(row):
row_cells[i].text = cell
doc.save(output_path)
模板化生成
准备模板文件template.docx,其中包含占位符如{{title}}:
from docxtpl import DocxTemplate
def generate_from_template(context: dict, output_path: str):
try:
doc = DocxTemplate('template.docx')
doc.render(context)
doc.save(output_path)
except FileNotFoundError:
print('模板文件未找到')
生产级优化
内存管理
使用上下文管理器确保资源释放:
with Document() as doc:
# 文档操作代码
doc.save('output.docx')
并发安全
实现文件锁机制:
import fcntl
def safe_save(doc, path):
with open(path, 'wb') as f:
fcntl.flock(f, fcntl.LOCK_EX)
doc.save(f)
fcntl.flock(f, fcntl.LOCK_UN)
避坑指南
-
路径处理 :使用
pathlib替代字符串拼接from pathlib import Path output_path = Path('output') / 'report.docx' -
中文字体:指定系统已安装的中文字体
- 版本兼容:python-docx 0.8.11+ 支持 Python3.6+
延伸思考
- 如何将本方案集成到 ChatGPT 插件系统?
- 能否实现 Markdown 到 Word 的自动转换?
- 文档生成后如何自动发送邮件通知?
希望这篇指南能帮助你提升文档处理效率。在实际项目中,建议先从小规模测试开始,逐步完善异常处理和性能优化。
正文完
