上一篇介绍了【Python 实现 PDF 文件的批量操作】,这篇将介绍通过 Python 实现 Word 文档的批量操作。Word 作为日常办公重要且常用的文档之一,经常也会遇到一些繁琐的操作场景,比如批量生成某一类型的 Word 文档,批量对 Word 文档的关键字进行标注、替换或者删除,批量将 Word 文档转换成其他格式的文件等。为了提升工作的效率,通过 Python 解决这些场景的方式,有必要了解下。
Word 文件的后缀有.doc 和 .docx 格式,以下模块支持 word 文档的读写:
- python-docx:只支持.docx 格式,但可以将 .doc 转成 .docx 格式,从而间接支持 .doc 格式;
- pywin32:调用系统的word功能,可以同时支持.doc 和 .docx 格式;
接下来,使用会涉及到这两个模块的使用,可以通过 pip 命令先下载这些模块,
需要注意,python-docx 模块在 import 时,名称是 docx;pywin32 模块在导入时,名称是win32com。
我们知道,在平时办公中,如果使用 Word 文档的 "邮件合并" 功能,可以批量制作一些主要内容相同、只是部分数据不一样的文档,比如邀请函、通知单、采购合同、成绩单等。Python 也可以实现类似的功能,通过套用指定的模板批量生成 Word 文档。
以邀请函的批量制作为例,首先准备一份模板,内容如下:
邀请函中需要替换的字段都用 英文单词 标记,而填充到模板中的具体信息,可以放在 Excel 表格保存,需要注意的是,Excel 表格各列的标题必须与模板中的字段名保持一致,如下:
代码实现的思路也比较简单:从 Excel 表格中逐行读取数据,然后在 Word 模板文档中查找对应的字段进行替换,最后保存替换后的 Word 文档,完成邀请函的批量制作。
引入的模块:
自定义替换标记内容的方法,如下:
读取 Excel ,经过替换处理后,批量生成带公司名称的 Word 文档:
测试如下:
效果如下:
打开其中的一个 Word 文档,验证替换效果,如下:
完美~~
有时候,我们可能比较关心 Word 文档里的某些关键词,如果搜索一篇几十页的文档的话,每次只能查找一个关键词,极不方便,有没有办法将我们关心的关键词列表在文档显著的标注出来呢?这样翻看的时候,既能抓住重点,也能避免漏掉关键信息的说明。
基于这种需求场景,接下来使用 Python 实现对 Word 文档的关键词进行批量标注。思路是,使用win32com 模块模拟打开 Word 文档的过程,并在此过程中对指定的关键词列表进行查找和样式标记,全部查找并标注完成后,调用另存为方法对新的 Word 文档保存。
首先,导入相关依赖:
接着,开始编码实现,如下:
在设置样式时,可自定义设置要标注的样式,如下:
然后,就可以测试了,测试代码如下:
在网上搜索了一篇关于考勤制度的 Word 文档说明,有几十页之多,说实话每个人可能不会去耐心看完的!而我比较关心'旷工', '迟到', '早退', '加班'等关键词信息,这里通过批量标注,来选择性的阅读。测试效果,如下:
打开【关键词批量标注_公司考勤制度(参考).docx】,看一下:
以后阅读这种长篇的 Word 文档,通过批量标注的方式就可以提升效率了~~
有了批量标注 Word 文档关键词的思路之后,实现批量替换/删除就很简单了,其实就是将 colorList 里颜色常量,修改成替换后的关键词,如下:
样式设置的话,略做修改:
仍以考勤制度的 Word 文档为例:
打开【关键词批量替换_公司考勤制度(参考).docx】,效果如下:
效果看上去还不错,如果批量删除的话,就更简单了,把 colorList 都用空字符串填充即可。
这里,使用 win32com 模块,通过 SaveAs("输出路径", 2) 核心 API 即可实现 Word 转 txt。思路是 模拟打开 Word 文档,并另存为... 的操作过程。实现如下:
转换效果,如下:
需要注意,如果 Word 文档含有图片、表格、图表等特殊区域元素的话,这些是不会被转储到 txt 文件的!!
批量将 Word 文档转换成 PDF 文件,在之前的文章详细说明过,这里不再赘述了。
有时候,我们可能还会遇到将 Word 文档内容直接贴出来,而不是发送 Word 文档。比如,写博客文章时贴图,又比如 PPT 引用图片等场景。这样的话,靠截图可以简单实现,如果 Word 文档页数很多,一张张截图未免太麻烦了,这时候将 Word 文档转换成图片才是明智之举。
如何将 Word 文档转换成图片呢?有个可行的思路,如下:
- 先将 Word 转换成 PDF;
- 再利用 PDF 的 pdfplumber 模块的 to_inmage() 方法转换成图片;
- 最后为了满足转换不同格式的图片,可编写个图片格式转换器。
第一步,就是 4.2 描述的场景,第二步在上篇的【提取PDF文件的内容】的【提取图片】有说明过,这些都是验证过并现成的,不再赘述了。
这里,重点实现下图片格式转换器,前面都是默认的 .png 格式,如果转成其他格式,可以自定义实现,如下:
测试用的图片默认的是 .jpg,需要转换成 .png 或 .bmp 格式,转换后的效果,如下:
本文地址:http://zleialh.tongchengxian.cn/quote/413.html 通成线 http://zleialh.tongchengxian.cn/ , 查看更多