问题引入
目前的日常工作中,见的最多的还是对Excel文件和 Word文件的处理。对于Excel文件,如果出现xls、xlsx、xlsm混合文件应该怎么处理?对于Word文件,出现doc和docx的混合文件,又该怎么处理。
你可能会用VBA,但是不得不说,批量操作这些文件,还是要学Python,操作真的很简单。
为了增强文章的可读性,我们分2篇文章讲述这些问题。今天,我们讲述的是如何将doc文件 转换为 docx文件。
学了黄同学的原创《Python自动化办公文档》后,你可能知道:我们常用python-docx来处理Word文件。但是,python-docx只能处理“.docx”的Word文件。因此,咱们需要批量将“.doc”文件,批量转换为“.docx”文件后,再进行二次处理。
近日,就有一个女同事让我批量处理一下Word中的内容。这还是头一次处理这样的问题,为了解决这个问题,我只能:① 批量将doc文件,转换为docx文件;② 使用python-docx库,批量处理docx文件。
将doc文件,转换为docx文件
python-docx库,如何处理docx文件,我们的文档中已经为大家进行了详细的解释。今天黄同学就教大家写一段代码,实现这个doc文件转换为docx文件操作。
1)安装win32com库
这里需要做一个说明,如果采用以下方式,无法安装的话。
pip install win32com
那么,就采用下面这个方法进行安装。
python -m pip install pypiwin32
2)win32com库相关语法的说明
这里我们没有什么太高深的代码,只是有些代码怕大家看不懂,因此给大家做一个说明。
# 调用word程序
WordApp = win32com.client.Dispatch("Word.Application")
# 后台运行,不显示,不警告
WordApp.Visible = 0
WordApp.DisplayAlerts = 0
3)完整代码
这里我们采用“面向过程”的方式,去写这个代码,这样会让代码可读性更强。
import os
import time
import win32com
from win32com.client import Dispatch
def doc_to_docx(path):
w = win32com.client.Dispatch('Word.Application')
w.Visible = 0
w.DisplayAlerts = 0
doc = w.Documents.Open(path)
# 这里必须要绝对地址,保持和doc路径一致
newpath = allpath+'\\转换后的文档.docx'
time.sleep(3) # 暂停3s,否则会出现-2147352567,错误
doc.SaveAs(newpath,12,False,"",True,"",False,False,False,False)
# doc.Close() 开启则会删掉原来的doc
w.Quit()# 退出
return newpath
allpath = os.getcwd()
print(allpath)
doc\_to\_docx(allpath+'\\转换前的文档.doc')
最终效果:
**-----**------**-----**---**** End **-----**--------**-----**-****
往期精彩文章推荐:
欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。
本文转自 https://mp.weixin.qq.com/s/4a1VUzpLy_LadNkMAXMG8A,如有侵权,请联系删除。