在文字工作中,经常会碰到与需要批量生成、编辑word文档的需求,这类机械性的工作非常适合编写小工具进行批量处理,使得原本人工处理需要几小时的工作量缩短为几分钟。
工具介绍
Python下处理word文档最好用的库为 python-docx, 目前已收入pypi,直接使用pip安装即可。
新建文档
可以新建一个空白文档 Document ,如下:
1 | from docx import Document |
编辑现有文档
将现存文件的路径传给Document类即可。
1 | from docx import Document |
新建标题
新建一个标题, 其中level参数可选,有1-9中规格,代表标题级别。
1 | document.add_heading('新建标题', level=1) |
新建段落
创建段落 paragraph 的操作如下:
1 | paragraph = document.add_paragraph('新建段落。') |
设置段落样式
1 | paragraph = document.add_paragraph('这是一个样式为 ListBullet 的段落') |
设置段落对齐方式
段落对齐方式有 左对齐
、 文字居中
、 右对齐
、 两端对齐
,更多对齐方式请参考 WD_ALIGN_PARAGRAPH
1 | from docx.enum.text import WD_ALIGN_PARAGRAPH |
设置段落缩进
设置段落缩进,可为负值:
1 | from docx.shared import Inches |
也可以设置首行缩进:
1 | paragraph.paragraph_format.first_line_indent = Inches(0.5) |
设置段落行距
当行距为 最小值
和 固定值
时,设置值单位为 磅
,需要用 Pt
;当行距为 多倍行距
时,设置值为数值,如下:
1 | from docx.enum.text import WD_LINE_SPACING |
片段设置(Run)
段落包含很多块级的格式,比如缩进、行高、制表符等。每一个小片段叫做一个 run ,可以对 run
设置粗体和斜体等属性。
1 | paragraph = document.add_paragraph() |
更多参考资料
中文:https://zhuanlan.zhihu.com/p/61340025
官方文档 :https://python-docx.readthedocs.io/en/latest/index.html
案例介绍
假设我们需要生成如下的代办xx业务的委托书,客户名字和身份证号来源于其他文件(可以是txt,excel),如果手动进行复制粘贴,费时费力,不如用上一节介绍的工具进行批量处理。

下面示例代码用于生成上图中的模板文档,中文可以自行替换; 函数接收姓名、身份证号组成的列表作为 参数(另有代码进行处理,从其他 文件获得),如[('小明', 330201xxxxxxxxxxxxx1410), ..., ('小红', 330205xxxxxxxxxxxxx1701)]
1 | def generate_doc(namelist): |
如需完整代码,可以关注公众号”CodingSirTutor”, 回复“word批量处理”获取;如需定制文件模板或有特殊需求,可添加wx助手:caxiaozhushou咨询。
