Python利用python-docx实现自动生成Word文档

 更新时间:2025年07月06日 08:16:12   作者:站大爷IP  
在数字化办公场景中,Word 文档自动化生成能显著提升工作效率,本文通过实战案例,系统讲解如何利用 python-docx 库实现从基础文档创建到复杂格式控制的完整流程,希望对大家有所帮助

​引言

在数字化办公场景中,Word 文档自动化生成能显著提升工作效率。本文通过实战案例,系统讲解如何利用 python-docx 库实现从基础文档创建到复杂格式控制的完整流程,涵盖标题、段落、表格、图片等核心元素的自动化处理技巧。

一、环境准备与基础操作

1.1 库安装与导入

pip install python-docx
from docx import Document
from docx.shared import Pt, Inches
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

1.2 创建空白文档

doc = Document()

二、核心元素操作实战

2.1 标题与段落处理

多级标题创建:

doc.add_heading('一级标题', level=1)
doc.add_heading('二级标题', level=2)

格式化段落:

p = doc.add_paragraph('设置格式的段落')
run = p.runs[0]
run.bold = True
run.font.size = Pt(14)
p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

2.2 表格自动化生成

动态表格创建:

table = doc.add_table(rows=1, cols=3)
table.style = 'Table Grid'
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '部门'
hdr_cells[2].text = '工资'
 
data = [("张三", "财务部", "8000"), ("李四", "人事部", "7500")]
for item in data:
    row_cells = table.add_row().cells
    row_cells[0].text = item[0]
    row_cells[1].text = item[1]
    row_cells[2].text = item[2]

2.3 图片插入与控制

精准尺寸控制:

doc.add_picture('logo.png', width=Inches(2.0))

三、高级格式控制技巧

3.1 段落格式深度定制

缩进与间距设置:

p.paragraph_format.left_indent = Inches(0.5)
p.paragraph_format.right_indent = Pt(24)
p.paragraph_format.space_after = Pt(12)

制表位应用:

tab_stops = p.paragraph_format.tab_stops
tab_stop = tab_stops.add_tab_stop(Inches(1.5), WD_TAB_ALIGNMENT.RIGHT, WD_TAB_LEADER.DOTS)

3.2 字符级样式控制

字体效果组合:

run = p.add_run('高级格式示例')
run.font.name = '微软雅黑'
run.font.size = Pt(16)
run.font.color.rgb = RGBColor(0x00, 0x66, 0xcc)
run.font.underline = WD_UNDERLINE.DOUBLE

四、实战场景解析

4.1 模板填充自动化

合同文档生成:

def fill_template(template_path, output_path, context):
    doc = Document(template_path)
    for para in doc.paragraphs:
        for key, val in context.items():
            if f'{{{{{key}}}}}' in para.text:
                para.text = para.text.replace(f'{{{{{key}}}}}', str(val))
    doc.save(output_path)
 
context = {
    "contract_no": "HT2024060101",
    "party_a": "上海科技有限公司",
    "amount": 35000
}
fill_template("contract_template.docx", "output.docx", context)

4.2 批量文档生成

Excel驱动生成:

import pandas as pd
 
df = pd.read_excel('employees.xlsx')
for index, row in df.iterrows():
    doc = Document()
    doc.add_heading(f'员工档案-{row["编号"]}', level=1)
    doc.add_paragraph(f'姓名:{row["姓名"]}')
    doc.add_paragraph(f'部门:{row["部门"]}')
    doc.save(f'archives/{row["编号"]}.docx')

五、性能优化与最佳实践

5.1 样式复用策略

全局样式定义:

styles = doc.styles
title_style = styles.add_style('CustomTitle', WD_STYLE_TYPE.PARAGRAPH)
title_font = title_style.font
title_font.name = '微软雅黑'
title_font.size = Pt(22)

5.2 内存优化技巧

流式处理大文档:

doc = Document()
for i in range(1000):
    doc.add_paragraph(f'第{i}条记录')
    if i % 50 == 0:
        doc.add_page_break()

六、常见问题解决方案

中文字体显示问题

from docx.oxml.ns import qn
run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')

表格自动调整

table.autofit = False
table.columns[0].width = Inches(1.5)

结语

通过系统掌握python-docx的层级结构控制和样式管理,可实现从简单报告到复杂模板的自动化生成。实际应用中需注意文档结构规划、样式预定义和异常处理机制,这些实践能显著提升自动化文档的可靠性和可维护性。

​到此这篇关于Python利用python-docx实现自动生成Word文档的文章就介绍到这了,更多相关Python python-docx生成Word内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 捕获代码中所有异常的方法

    Python 捕获代码中所有异常的方法

    这篇文章主要介绍了Python 捕获代码中所有异常的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • python进行图片相似度对比的两种实现方法

    python进行图片相似度对比的两种实现方法

    Python提供了一些库和工具可以用于图片的相似度比对,本文就详细的介绍了两种实现方法,感知哈希和结构相似性,下面就来介绍一下,感兴趣的可以了解一下
    2023-10-10
  • 关于Python的pymouse click 双击的问题

    关于Python的pymouse click 双击的问题

    这篇文章主要介绍了关于Python的pymouse click 双击的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • django rest framework使用django-filter用法

    django rest framework使用django-filter用法

    这篇文章主要介绍了django rest framework使用django-filter用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python之数字图像处理方式

    python之数字图像处理方式

    这篇文章主要介绍了python之数字图像处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 使用pycharm进行绘图,图片无法显示的解决

    使用pycharm进行绘图,图片无法显示的解决

    这篇文章主要介绍了使用pycharm进行绘图,图片无法显示的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Python实现自动记录复制的文本并保存

    Python实现自动记录复制的文本并保存

    这篇文章主要为大家详细介绍了如何使用Python开发一个小工具,可以实现记录你复制的文本内容并自动保存,这样就再也不怕搞丢灵感或者代码段啦
    2025-04-04
  • Django开发的简易留言板案例详解

    Django开发的简易留言板案例详解

    这篇文章主要介绍了Django开发的简易留言板,结合实例形式详细分析了基于Python框架Django开发留言板的具体文件结构、流程步骤与相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • 使用python读写txt和json(jsonl)大文件的方法步骤

    使用python读写txt和json(jsonl)大文件的方法步骤

    在Python中读取txt和json(jsonl)大文件并保存到字典是一项非常常见的操作,这篇文章主要给大家介绍了关于使用python读写txt和json(jsonl)大文件的方法步骤,需要的朋友可以参考下
    2023-12-12
  • 如何使用python批量修改文本文件编码格式

    如何使用python批量修改文本文件编码格式

    把文本文件的编码格式进行批量幻化,比如ascii, gb2312, utf8等,相互转化,字符集的大小来看,utf8>gb2312>ascii,因此最好把gb2312转为utf8,否则容易出现乱码,这篇文章主要介绍了如何使用python批量修改文本文件编码格式,需要的朋友可以参考下
    2023-03-03

最新评论