3秒合并为1个word文件 怎么把文档合并成一个文档

Python 办公自动化 — Word 专栏
在工作学习中
有时我们需要将多个word文件进行合并
如果每个 word 文件的页数较多
或者 word 文件比较多
进行人工合并,就会比较麻烦,而且耗时
这时,用 Python 来处理,3 秒就可以搞定!

3秒合并为1个word文件 怎么把文档合并成一个文档


导入所需的 python 库
#库 docx 是处理 docx 格式 word文档的重要库
from docx import Document
#库 docxcompose 是 python 合并或追加 微软 Word (.docx)文档的库
from docxcompose.composer import Composer
#库 pathlib 是文件路径处理的库
from pathlib import Path

3秒合并为1个word文件 怎么把文档合并成一个文档


具体实现过程
“””
【3秒合并为1个word文件 怎么把文档合并成一个文档】 获取文件夹中的所有 docx 格式的文件,返回生成器 files,本案例是从 e 盘下#的 400 文件夹里提取所有的 docx 格式的 word 文档,如果是 doc 格式的,需先转为 docx 。
“””
files = Path(‘e:/400/’).glob(‘*.docx’)
#将生成器 files 转为列表 fiels,方便后面使用
files = list(files)
“””
本案例将第 1 个 docx 文件,作为合并后文件的模板,也就是说,合并后的新 word 文档,其页眉页脚以及页码,是以第 1 个 docx 文件的页眉页脚以及页码为准的,忽略其它 docx 文件的页眉页脚以及页码等 。
“””
#读取第 1 个文件
dmt = Document(files[0])
#第 1 个文件的末尾添加分页符
dmt.add_page_break()
#将添加了分页符的第 1 个文件,放到 Composer 对象中,即成为模板
cp = Composer(dmt)
print(‘模板文件是:{}’.format(files[0])) #提示哪个是模板文件
“””
#将其它 docx 格式的 word 文件,追加到 Composer 对象中,即依照文件在 files 列表中由左到右的顺序连接起来 。同时,输出每次追加文件的名称及其后缀,方便查看并核对合并的前后顺序是否正确 。
“””
#循环追加每个 docx 文件
for file in files[1:]:
dmt = Document(file)
#每个 word 文件的末尾添加分页符
dmt.add_page_break()
#将每一个 dmt 追加到 Composer 对象 cp 中
cp.append(dmt)
#提示当前合并的文件是哪个文件
print(‘已合并文件:{}’.format(file))
“””
最后将对象 cp 中添加的内容输出到本地,并取名为 new.docx
“””
#保存合并后的文件为 new.docx
cp.save(‘e:/new.docx’)
#提示合并工作完成
print(‘完成’)

3秒合并为1个word文件 怎么把文档合并成一个文档


注意事项
上面的代码可以实现批量合并 docx 文档,非常方便我们解决这类合并需求 。
默认情况下,Composer 对象将每个 docx 文件从每个文件的末尾开始追加或合并,而不是从下一页开始合并 。如果每个文件都要从下一页合并,需要如上所示添加分页符 。
对于含有文字、图片、表格等内容的 docx,以上代码可以使用 。如果 docx 文件中含有文本框等内容,以上代码运行时会报错 。需要将 docx 文件中的文本框等处理掉,才能使用以上代码 。

    推荐阅读