当前位置:首页>python>【小沐学Python】Python操作Word文档的正确方式,5个库帮你搞定一切!(九)

【小沐学Python】Python操作Word文档的正确方式,5个库帮你搞定一切!(九)

  • 2026-09-17 13:00:42
【小沐学Python】Python操作Word文档的正确方式,5个库帮你搞定一切!(九)

小沐:戈戈,我最近接了个任务,需要批量生成一些Word报告,头疼死了。

戈戈:你说的是自动化生成文档吧?Python有很多库可以处理这个。

小沐:真的吗?我只知道一点python-docx,还有其他选择吗?

戈戈:当然有了,不同场景用不同的库效果才最好。让我给你梳理一下。

小沐:太好了,那我可得好好学学,以后就不用手工一个个改了。

Python Word操作库完全指南

在日常办公中,Word文档处理是很多小伙伴的"噩梦"。手工修改格式、批量替换内容、生成模板报告...这些重复性工作既耗时又容易出错。其实,Python生态为我们提供了丰富的Word操作库,能够轻松实现文档的创建、修改、模板生成、格式转换等功能。今天,就让戈戈带大家全面了解一下这些强大的工具库!

一、python-docx:Word文档处理的基础利器

1.1 功能介绍

python-docx 是Python操作Word文档最基础也是最常用的库。它可以创建新的Word文档、读取现有文档、添加或修改文本、段落、表格、图片等内容,支持设置字体、颜色、对齐方式等基本格式。

1.2 安装方法

pip install python-docx

1.3 使用方法

python-docx的使用非常直观。首先需要导入Document类,然后创建文档对象,接着添加各种内容元素。

1.4 示例代码

# 导入python-docx库from docx import Documentfrom docx.shared import Inches, Pt, RGBColorfrom docx.enum.text import WD_ALIGN_PARAGRAPH# 创建一个新的Word文档doc = Document()# 添加标题title = doc.add_heading('Python操作Word文档示例', level=0)title.alignment = WD_ALIGN_PARAGRAPH.CENTER  # 居中显示# 添加段落paragraph = doc.add_paragraph('这是第一个段落,展示了python-docx的基本用法。')paragraph_format = paragraph.paragraph_formatparagraph_format.first_line_indent = Inches(0.5)  # 首行缩进# 添加带格式的段落run = doc.add_paragraph().add_run('这是加粗红色的文字,爱阅读的小沐')run.bold = Truerun.font.size = Pt(14)run.font.color.rgb = RGBColor(255, 0, 0)# 添加分页符doc.add_page_break()# 添加子标题doc.add_heading('第二部分:表格操作', level=1)# 添加表格table = doc.add_table(rows=3, cols=3)table.style = 'Light Grid Accent 1'  # 设置表格样式# 填充表格数据headers = ['姓名', '年龄', '城市']for i, header in enumerate(headers):    table.rows[0].cells[i].text = headerdata = [    ['张三', '28', '北京'],    ['李四', '32', '上海']]for row_idx, row_data in enumerate(data, start=1):    for col_idx, cell_data in enumerate(row_data):        table.rows[row_idx].cells[col_idx].text = cell_data# 保存文档doc.save('example.docx')print('文档创建成功!')

代码运行结果如下:

二、docxtpl:模板引擎的高效之选

2.1 功能介绍

docxtpl 是一个基于python-docx的模板引擎库。它允许你使用Jinja2模板语法来生成Word文档,特别适合需要批量生成格式一致但内容不同的报告、证书、邀请函等场景。只需制作一次模板,之后替换变量即可自动生成文档,效率极高。

2.2 安装方法

pip install docxtpl

2.3 使用方法

docxtpl的工作流程是:先制作一个包含占位符的Word模板,然后使用字典数据渲染模板,最后保存为新文档。

2.4 示例代码

# 测试docxtplfrom docxtpl import DocxTemplatefrom datetime import datetimeimport osprint("开始测试docxtpl...")# 加载模板文档doc = DocxTemplate("template2.docx")# 准备渲染数据context = {    'title': '员工信息登记表',    'date': datetime.now().strftime('%Y年%m月%d日'),    'company': '科技创新有限公司',    'employees': [        {'name': '小沐', 'department': '技术部', 'position': 'Python开发工程师'},        {'name': '李小红', 'department': '产品部', 'position': '产品经理'},        {'name': '张小华', 'department': '设计部', 'position': 'UI设计师'}    ],    'total': 3}# 渲染模板doc.render(context)# 保存生成的新文档output_filename = f"员工信息_{datetime.now().strftime('%Y%m%d')}.docx"doc.save(output_filename)print(f'文档生成成功:{output_filename}')print(f'文件是否存在:{os.path.exists(output_filename)}')

代码运行结果如下:

模板文件生成如下:

基于上面的模板文件填充如下:

三、pypandoc:文档格式转换的桥梁

3.1 功能介绍

pypandoc 是一个文档格式转换库,它是对Pandoc的Python包装。Pandoc是一个强大的文档转换器,支持Markdown、HTML、LaTeX、Word等多种格式的互转。使用pypandodc,你可以轻松将Markdown文件转换为Word,也可以将Word转换为其他格式。

3.2 安装方法

pip install pypandoc

需要注意的是,pypandoc还需要系统中安装Pandoc程序。安装完成后,pypandoc会自动下载Pandoc。 https://github.com/jgm/pandoc/releases/tag/3.9

3.3 使用方法

pypandoc的使用非常简单,主要通过convert_file和convert_text两个函数进行格式转换。

3.4 示例代码

import pypandoc# 将Markdown文件转换为Word# 确保同级目录下有一个 test.md 文件try:    # 方法1:文件到文件的转换    output = pypandoc.convert_file(        source_file='test.md',        to='docx',        outputfile='output.docx',        extra_args=['--standalone']  # 生成独立文档    )    print('Markdown转Word成功!')except FileNotFoundError:    print('请确保 test.md 文件存在,或先创建一个Markdown文件')except Exception as e:    print(f'转换过程中出现错误:{e}')

准备的test.md文件如下:

代码运行结果如下:

转换成功的word文件如下:

image

四、pywin32:Windows原生的深度集成

4.1 功能介绍

pywin32 是Python访问Windows API的扩展库,通过它可以使用COM接口直接操作Microsoft Word应用程序。这种方式能够实现最完整的Word功能,包括一些只有通过Word应用程序才能完成的操作,如宏脚本执行、修订模式、精确的页面布局控制等。

4.2 安装方法

pip install pywin32

4.3 使用方法

pywin32需要Windows系统和安装Microsoft Word。它通过COM接口与Word应用程序通信,所以使用完毕后需要正确释放资源。

4.4 示例代码

import win32com.clientimport osfrom pathlib import Pathdef create_word_document_with_com():    """使用pywin32创建Word文档(需要Windows系统)"""    try:        # 创建Word应用程序对象        word_app = win32com.client.Dispatch("Word.Application")        word_app.Visible = False  # 不显示Word窗口        # 创建新文档        doc = word_app.Documents.Add()        # 添加标题        selection = word_app.Selection        selection.Font.Size = 16        selection.Font.Bold = True        selection.TypeText("使用pywin32生成的Word文档\n\n")        # 添加正文        selection.Font.Size = 12        selection.Font.Bold = False        content = """小沐总结如下:这是通过Python的pywin32库调用Microsoft Word COM接口生成的文档。pywin32可以实现:1. 完整的Word功能支持2. 宏脚本执行3. 精确的格式控制4. 与Word模板深度集成        """        selection.TypeText(content)        # 添加表格        table = doc.Tables.Add(selection.Range, 3, 2)        table.Cell(1, 1).Range.Text = "产品"        table.Cell(1, 2).Range.Text = "销量"        table.Cell(2, 1).Range.Text = "产品A"        table.Cell(2, 2).Range.Text = "1000"        table.Cell(3, 1).Range.Text = "产品B"        table.Cell(3, 2).Range.Text = "800"        # 保存文档        output_path = os.path.abspath("com_output.docx")        doc.SaveAs(output_path)        # 关闭文档和Word应用程序        doc.Close()        word_app.Quit()        print(f'文档创建成功:{output_path}')    except Exception as e:        print(f'创建文档时出错:{e}')        print('请确保已安装Microsoft Word并赋予Python相应权限')# 注意:此代码需要在Windows系统上运行,且已安装Microsoft Officeif __name__ == "__main__":    # 先检查是否为Windows系统    import platform    if platform.system() == "Windows":        create_word_document_with_com()    else:        print('pywin32仅支持Windows系统')

代码运行结果如下:

五、综合对比

通过对以上几个库的了解相信大家已经对Python操作Word的工具有了整体认识。下面用一张表格来总结各个库的特点和适用场景:

库名称
适用场景
优点
缺点
python-docx
基础文档创建和修改
简单易学,跨平台
功能相对基础
docxtpl
模板文档批量生成
模板语法强大,效率高
需要预先制作模板
pypandoc
文档格式转换
支持多种格式转换
需要安装Pandoc
pywin32
Windows深度集成
功能最完整
只能Windows使用

小沐:戈戈,听完你的介绍,我对Python操作Word的库有了全面的了解!

戈戈:没错,不同的库适合不同的场景。掌握这些工具后,批量生成报告、自动填写模板这些工作都能轻松搞定。

小沐:以后加班修改文档的苦日子终于到头了,感谢戈戈!

戈戈:赶紧回去试试吧,有问题随时来找我!

结语

如果您觉得这些文字有一点点用处,请给作者点个赞或关个注;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见:
CSDN博客:爱看书的小沐

最新文章

随机文章