2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python 合并word文件_python自动化办公(1)—— 批量合并word文档

python 合并word文件_python自动化办公(1)—— 批量合并word文档

时间:2021-07-10 14:21:34

相关推荐

python 合并word文件_python自动化办公(1)—— 批量合并word文档

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

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

我稍微了解了一些这种方法,按照这种方式,只能选择同一层次目录下的文档,当子目录非常多的时候,这种方法也不能一次把所有的文档都插入进去。但我还是按照上面的步骤进行了文档合并,点击确认后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:\software\doc'

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自动化办公技巧的想法,希望在我总结经验的同时,也能够帮助到大家~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。