python读取word合并单元格 python合并多个word文件_子目录


上个月领导交给我一个非常紧急的任务,限我2天之内完成。其中有一项是将项目两年内的分析报告汇总到一篇报告中。这些报告分散在不同的目录下,而且数量也非常多。

我花了30分钟左右梳理了一下这些分析报告,竟然有200多份,每份分析报告大概5-10页。我粗略计算了工作量,每次操作需要打开子目录——>找到word文档——>全选复制——>粘贴到新文档——>调整格式——>核对检查,完成一次操作至少得3分钟。合并完这200多份报告就得10个小时了,期间出现错误还得用更多的时间,这太浪费时间了!于是我就在网上搜索如何快速合并文档,终于找到了一个办法。


python读取word合并单元格 python合并多个word文件_python docx 合并文档 图片_02


我稍微了解了一些这种方法,按照这种方式,只能选择同一层次目录下的文档,当子目录非常多的时候,这种方法也不能一次把所有的文档都插入进去。但我还是按照上面的步骤进行了文档合并,点击确认后word的图标就变成灰白色了,软件就卡住了。无奈之下,我只能强制退出了。我又连续试了几次都是如此,我的工作再一次陷入了僵局。

我思考了一会儿,突然想起python在处理大规模数据上非常有优势,何不用python试试?于是我用python的组间对象模型(COM)设计了一个同时对多个word文件进行合并的程序,代码如下:


import win32com.client as win32
import os
word = win32.gencache.EnsureDispatch('Word.Application')
#启动word对象应用
word.Visible = False
path = r'D:softwaredoc'
files = []
for filename in os.listdir(path):
    filename = os.path.join(path,filename)
    files.append(filename)
#新建合并后的文档
output = word.Documents.Add()
for file in files:
    output.Application.Selection.InsertFile(file)#拼接文档
#获取合并后文档的内容
doc = output.Range(output.Content.Start, output.Content.End)
output.SaveAs('D://software//doc//result.docx') #保存
output.Close()


大概等了两三分钟,一份1100多页,27万多字的分析报告就自动完成了,如果要用手动的方法去做,估计2天之内都不一定能完成,而且很可能出现大量的错误。


python读取word合并单元格 python合并多个word文件_python docx 合并文档 图片_03


经过这一次尝试,让我有了梳理一些常见python自动化办公技巧的想法,希望在我总结经验的同时,也能够帮助到大家~