python办公自动化 --- Word专栏
在工作学习中
有时我们需要将多个word文件进行合并
如果每个word文件的页数较多
或者word文件比较多
进行人工合并,就会比较麻烦,而且耗时
这时,用Python来处理,3秒就可以搞定!
导入所需的python库
#库docx是处理docx格式word文档的重要库
from docx import Document
#库docxcompose是python合并或追加 微软Word (.docx)文档的库
from docxcompose.composer import Composer
#库pathlib是文件路径处理的库
from pathlib import Path
具体实现过程
"""
获取文件夹中的所有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('完成')
注意事项
上面的代码可以实现批量合并docx文档,非常方便我们解决这类合并需求。
默认情况下,Composer对象将每个docx文件从每个文件的末尾开始追加或合并,而不是从下一页开始合并。如果每个文件都要从下一页合并,需要如上所示添加分页符。
对于含有文字、图片、表格等内容的docx,以上代码可以使用。如果docx文件中含有文本框等内容,以上代码运行时会报错。需要将docx文件中的文本框等处理掉,才能使用以上代码。