热搜词
发表于 昨天 19:31 | 显示全部楼层 |阅读模式
Python中使用docxcompose库批量合并多个Word文档文件并逐页添加分页符

合并文件是经常会遇到的需求。对于 Word 文件(DOCX格式),使用软件操作需要进行复制、粘贴, 说起来虽然简单,但是遇到大文件时,可能会出现无响应的问题。 尤其是文件多了之后,重复的操作也会非常无聊且易出错。通过 python-docx 模块可以读取并写出 docx 格式的文档, 理论上可以用来使用 DOCX 文件。 但是实际使用时可能会遇到各种问题,经常导致生成的结果无法打开。


使用第三方库,将多个word文档合并为一个,并且格式不发生变化。我们利用Python的docxcompose库,这是一个用于组合 Microsoft Word(.docx)文件的第三方库,使用起来非常方便。

这个实例内需要使用另一个库 docxcompose 来完成演示。


– docxcompose 方法
– 特点:专门用于合并 Word 文档,保留复杂格式,顺序合并,易集成。
– 适用场景:需保留详细格式和布局元素。
– 安装:`pip install docxcompose`
– 示例代码:使用`Composer`类进行合并,可添加页分隔。
  1. import os
  2. from docx import Document
  3. from docxcompose.composer import Composer
  4. from docx.enum.section import WD_SECTION  # 新增:导入分节符枚举

  5. # 定义目录路径
  6. base_dir = r'D:\Word文档合并工具\trae_docxcompose'
  7. output_path = os.path.join(base_dir, "activity_name.docx")

  8. # 筛选当前目录下的.docx文件
  9. all_docx_files = []
  10. for file_name in os.listdir(base_dir):
  11.     if file_name.lower().endswith('.docx'):
  12.         file_path = os.path.join(base_dir, file_name)
  13.         all_docx_files.append(file_path)

  14. if not all_docx_files:
  15.     print("错误:目录下未找到任何.docx文件")
  16.     exit()

  17. # 初始化合并器(使用第一个文档作为基础)
  18. first_doc = Document(all_docx_files[0])
  19. composer = Composer(first_doc)

  20. # 合并后续文档(每个文档前添加分页符)
  21. for doc_path in all_docx_files[1:]:
  22.     # 关键修改:在当前文档前添加分节符(强制新页面)
  23.     # 通过添加"新页面"分节符确保后续内容从新页开始
  24.     new_section = first_doc.add_section(WD_SECTION.NEW_PAGE)
  25.     # 加载当前文档并合并
  26.     current_doc = Document(doc_path)
  27.     composer.append(current_doc)

  28. # 保存合并结果
  29. composer.save(output_path)
  30. print(f"合并完成!输出路径:{output_path}")
复制代码
使用 Python 进行合并是非常简单的,在word软件里也提供了合并的功能,但是没有使用 Python 这么方便快捷。

参考:https://www.osgeo.cn/python-tutorial/docx-docxcompose.html

全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2025-6-9 02:24 , Processed in 0.166722 second(s), 23 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2025 Discuz! Team