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

作者:

文章目录
  • 在数字化办公场景中,Word 文档自动化生成能显著提升工作效率。本文通过实战案例,系统讲解如何利用 python-docx 库实现从基础文档创建到复杂格式控制的完整流程,涵盖标题、段落、表格、图片等核心元素的自动化处理技巧。
  • 中文字体显示问题 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-docx实现自动化处理Word文档 python使用python-docx处理word的方法示例 详解python-docx处理Word必备工具 Python使用python-docx读写word文档 python-docx修改已存在的Word文档的表格的字体格式方法
  • 目录
    • ​引言
    • 一、环境准备与基础操作
      • 1.1 库安装与导入
      • 1.2 创建空白文档
    • 二、核心元素操作实战
      • 2.1 标题与段落处理
      • 2.2 表格自动化生成
      • 2.3 图片插入与控制
    • 三、高级格式控制技巧
      • 3.1 段落格式深度定制
      • 3.2 字符级样式控制
    • 四、实战场景解析
      • 4.1 模板填充自动化
      • 4.2 批量文档生成
    • 五、性能优化与最佳实践
      • 5.1 样式复用策略
      • 5.2 内存优化技巧
    • 六、常见问题解决方案
      • 结语

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

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

        doc = Document()
        

        多级标题创建:

        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
        

        动态表格创建:

        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]
        

        精准尺寸控制:

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

        缩进与间距设置:

        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)
        

        字体效果组合:

        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
        

        合同文档生成:

        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)
        

        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')
        

        全局样式定义:

        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)
        

        流式处理大文档:

        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-docx实现自动化处理Word文档
        • python使用python-docx处理word的方法示例
        • 详解python-docx处理Word必备工具
        • Python使用python-docx读写word文档
        • python-docx修改已存在的Word文档的表格的字体格式方法

        站内搜索