标签:#Python办公自动化 #Word自动化 #python-docx #批量生成合同 #文档模板填充 #办公效率工具
前言
前面三篇我们完整吃透了 Excel 全流程自动化:数据读写、合并拆分、格式美化、图表可视化,彻底搞定表格类重复工作。
职场除了表格,占比最高的就是 Word 文档工作:批量制作劳动合同、入职证明、汇报报告、通知公告、项目文档。
手动做Word文档有这些致命痛点:
❌ 百份合同仅姓名、日期、金额不同,其余内容完全一致,手动复制粘贴极度耗时
❌ 文档字体、行距、缩进不统一,批量排版需要反复调整
❌ 需要批量插入表格、图片、落款,重复机械操作极易出错
❌ 修改通用模板内容,每份文档需要逐一手动修改
本篇手把手带大家掌握 python-docx 库,零基础实现 Word 全套自动化:新建文档、文字排版、段落样式、模板批量填充、批量生成合同、插入表格图片、统一全局格式,一键生成上百份标准文档!
一、环境安装与核心概念
本次使用专属Word自动化库 python-docx,专注处理 .docx 新版文档,不支持旧版 .doc 格式。
一键安装依赖:
pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple核心层级概念(零基础秒懂)
Document:整个Word文档对象(完整文件)
Paragraph:段落(每一段文字、空行)
Run:段落内文字块(单独设置字体、颜色、加粗)
Table:文档内表格对象
二、基础实战:新建Word、写入文字、样式排版
从零创建Word文档,实现写入标题、正文、设置字体、居中、行距、加粗变色,生成标准格式文档。
关键避坑
python-docx 默认不支持中文字体,必须通过 qn('w:eastAsia') 设置中文字体,否则中文全部错乱、样式失效。
三、核心实战一:Word模板批量填充(职场最高频)
场景:固定模板合同、证明、通知,仅替换变量信息(姓名、日期、金额、部门),批量生成百份文档。
操作步骤
1、手动制作 template.docx 模板文件,用 {{变量名}} 占位;
2、脚本读取模板,批量替换所有占位变量;
3、自动保存为独立文档,实现一键批量生成。
模板内容示例:
兹证明:{{name}},任职于{{dept}},岗位为{{job}},月薪{{salary}}元,入职日期{{date}}。该员工工作表现良好,信息真实有效,特此证明。完整批量填充代码:
# -*- coding: utf-8 -*-"""Python办公自动化第4篇 Word自动化 完整单文件代码适配公众号全文、无BUG、可直接运行"""from docx import Documentfrom docx.shared import Pt, Cmfrom docx.oxml.ns import qnfrom docx.enum.text import WD_ALIGN_PARAGRAPHfrom docx.shared import RGBColor# ===================== 1. 基础新建Word文档(带排版样式) =====================def create_base_doc():doc = Document()# 全局中文字体修复doc.styles["Normal"].font.name = "宋体"doc.styles["Normal"]._element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")doc.styles["Normal"].font.size = Pt(12)# 标题p_title = doc.add_paragraph()run_title = p_title.add_run("员工在职证明")p_title.alignment = WD_ALIGN_PARAGRAPH.CENTERrun_title.font.name = "黑体"run_title._element.rPr.rFonts.set(qn("w:eastAsia"), "黑体")run_title.font.size = Pt(20)run_title.font.bold = Truerun_title.font.color.rgb = RGBColor(0, 48, 96)# 正文p_content = doc.add_paragraph()content = "兹证明:张三,身份证号码:110101199901011234,于2025年03月10日正式入职我司,现任技术部Python开发工程师一职,月度税前薪资9000元。该员工在职期间工作认真、表现良好,以上信息真实有效,特此证明。"run_content = p_content.add_run(content)run_content.font.name = "宋体"run_content._element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")run_content.font.size = Pt(12)# 落款p_foot = doc.add_paragraph()foot_text = "XX科技有限公司\n2026年08月13日"run_foot = p_foot.add_run(foot_text)p_foot.alignment = WD_ALIGN_PARAGRAPH.RIGHTdoc.save("1_基础在职证明.docx")print("✅ 基础文档生成完成")# ===================== 2. 模板批量替换生成多文件 =====================def batch_create_doc():# 批量数据源data_list = [{"name":"张三","dept":"技术部","job":"Python开发工程师","salary":"9000","date":"2025-03-10"},{"name":"李四","dept":"市场部","job":"运营专员","salary":"7500","date":"2025-04-02"},{"name":"王五","dept":"人事部","job":"人事专员","salary":"7000","date":"2025-05-06"},]for data in data_list:doc = Document("template.docx")for para in doc.paragraphs:para.text = para.text.replace("{{name}}",data["name"])para.text = para.text.replace("{{dept}}",data["dept"])para.text = para.text.replace("{{job}}",data["job"])para.text = para.text.replace("{{salary}}",data["salary"])para.text = para.text.replace("{{date}}",data["date"])doc.save(f"2_{data['name']}_在职证明.docx")print(f"✅ {data['name']} 文档生成完成")# ===================== 3. 自动生成Word数据表格 =====================def create_table_doc():doc = Document()doc.styles["Normal"].font.name = "宋体"doc.styles["Normal"]._element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")doc.styles["Normal"].font.size = Pt(12)# 标题title = doc.add_paragraph()run = title.add_run("员工信息统计表")run.font.name = "黑体"run._element.rPr.rFonts.set(qn("w:eastAsia"), "黑体")run.font.size = Pt(16)run.font.bold = True# 创建表格table = doc.add_table(rows=5, cols=4)headers = ["姓名","部门","岗位","薪资"]for i,h in enumerate(headers):table.cell(0,i).text = h# 填充数据rows_data = [["张三","技术部","开发工程师","9000"],["李四","市场部","运营专员","7500"],["王五","人事部","人事专员","7000"],["赵六","财务部","会计","7800"],]for idx,row in enumerate(rows_data,1):for col,val in enumerate(row):table.cell(idx,col).text = valdoc.save("3_自动表格文档.docx")print("✅ 表格文档生成完成")# ===================== 4. 统一文档格式 =====================def format_doc():doc = Document("1_基础在职证明.docx")for p in doc.paragraphs:for run in p.runs:run.font.name = "宋体"run._element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")run.font.size = Pt(12)doc.save("4_统一格式文档.docx")print("✅ 格式统一完成")# ===================== 5. 完整综合报告 =====================def full_report():doc = Document()doc.styles["Normal"].font.name = "宋体"doc.styles["Normal"]._element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")doc.styles["Normal"].font.size = Pt(12)# 主标题t = doc.add_paragraph()tr = t.add_run("公司员工数据统计报告")t.alignment = WD_ALIGN_PARAGRAPH.CENTERtr.font.name = "黑体"tr._element.rPr.rFonts.set(qn("w:eastAsia"), "黑体")tr.font.size = Pt(20)tr.font.bold = True# 说明doc.add_paragraph("本报告由Python自动化生成,用于公司员工信息统计归档,数据真实有效、格式统一规范。")# 表格table = doc.add_table(rows=5, cols=4)heads = ["姓名","部门","岗位","月薪"]for i,h in enumerate(heads):table.cell(0,i).text = htable.cell(1,0).text = "张三"table.cell(1,1).text = "技术部"table.cell(1,2).text = "开发工程师"table.cell(1,3).text = "9000"table.cell(2,0).text = "李四"table.cell(2,1).text = "市场部"table.cell(2,2).text = "运营专员"table.cell(2,3).text = "7500"table.cell(3,0).text = "王五"table.cell(3,1).text = "人事部"table.cell(3,2).text = "人事专员"table.cell(3,3).text = "7000"# 落款foot = doc.add_paragraph()foot_run = foot.add_run("统计部门:行政人事部\n统计日期:2026年08月13日")foot.alignment = WD_ALIGN_PARAGRAPH.RIGHTdoc.save("5_全自动完整报告.docx")print("✅ 完整报告生成完成")if __name__ == "__main__":create_base_doc()create_table_doc()format_doc()full_report()# batch_create_doc() # 需先创建下面的 template.docx 再打开print("\n🎉 第四篇 Word 全部功能执行完毕!")
企业级优势:模板只需做一次,后续无限批量生成,格式100%统一,零人工错误。
四、核心实战二:Word中插入表格、自动填充数据
自动在文档中插入表格、批量写入数据、设置表格样式,自动生成员工信息表、业绩统计表、台账文档。
五、核心实战三:Word插入图片、自适应排版
自动在报告、方案中插入图片,设置图片宽度、居中显示,适配正式汇报文档排版。
实操技巧:使用 Cm() 厘米单位精准控制图片尺寸,避免图片过大溢出页面、过小排版难看。
六、进阶实战:批量修改已有文档格式
针对已有大量Word文档,批量统一字体、字号、行距、缩进,一键规整所有文档格式。
七、本篇高频踩坑避坑清单
❌中文样式不生效、字体错乱:未添加 eastAsia 中文字体配置,所有文档必须配置默认中文字体
❌ 旧版.doc文档无法打开:python-docx 仅支持 .docx 格式,旧文档需手动另存为新版格式
❌ 模板替换不生效:占位符空格必须完全一致,建议统一使用 {{变量}} 无空格格式
❌ 图片尺寸溢出页面:必须手动设置宽度,不要使用默认原生尺寸
❌ 批量生成文档覆盖文件:保存文件名必须差异化(姓名/日期命名),避免覆盖
八、职场落地万能场景
✅ 人事办公:批量生成劳动合同、入职证明、离职证明、薪资单
✅ 行政办公:批量生成通知、公告、红头文件模板填充
✅ 财务办公:批量生成报销说明、财务报表说明、对账文档
✅ 项目办公:批量生成项目周报、月报、方案文档,统一排版格式
文末结语
Word自动化是职场提效神器,尤其适合大量同质化文档场景。
学会模板批量填充后,原本几小时的文档制作工作,现在一秒生成百份文档,格式标准、零失误、零重复劳动。
结合前面Excel数据处理能力,你已经可以实现:Excel读取数据 → 自动填充Word模板 → 批量导出正式文档,完成完整办公闭环!