python-docx无法处理 “doc格式” 文件,于是我这样做......

问题引入

目前的日常工作中,见的最多的还是对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库

这里需要做一个说明,如果采用以下方式,无法安装的话。

1pip install win32com 2 3

那么,就采用下面这个方法进行安装。

1python -m pip install pypiwin32 2 3

2)win32com库相关语法的说明

这里我们没有什么太高深的代码,只是有些代码怕大家看不懂,因此给大家做一个说明。

1# 调用word程序 2WordApp = win32com.client.Dispatch("Word.Application") 3 4# 后台运行,不显示,不警告 5WordApp.Visible = 0 6WordApp.DisplayAlerts = 0 7 8

3)完整代码

这里我们采用**“面向过程”**的方式,去写这个代码,这样会让代码可读性更强。

1import os 2import time 3import win32com 4from win32com.client import Dispatch 5 6def doc_to_docx(path): 7   w = win32com.client.Dispatch('Word.Application') 8   w.Visible = 0 9   w.DisplayAlerts = 0 10   doc = w.Documents.Open(path) 11   # 这里必须要绝对地址,保持和doc路径一致 12   newpath = allpath+'\\转换后的文档.docx' 13   time.sleep(3) # 暂停3s,否则会出现-2147352567,错误 14   doc.SaveAs(newpath,12,False,"",True,"",False,False,False,False) 15   # doc.Close() 开启则会删掉原来的doc 16   w.Quit()# 退出 17   return newpath 18allpath = os.getcwd() 19print(allpath) 20doc\_to\_docx(allpath+'\\转换前的文档.doc') 21 22

最终效果:

-------------------********************************** End **********-------------**-----********-**********************************

往期精彩文章推荐:

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/4a1VUzpLy_LadNkMAXMG8A,如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

引言Python语言,近几年在办公自动化这一领域来说,真的超级火爆!用它做批量处理确实比VBA要方便很多。前面的文章,我们已经讲述了如何将doc文件转换为docx文件,还没有观看的朋友直接戳此链接:(http://mp.weixin.qq.com/s?bizMzkwNDE5NTc0Ng&mid2247514428&idx1&sn1f8720112f6a88

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.