python-docx对Word文档的指定位置(批量)插入图片

python-docx对Word文档的指定位置(批量)插入图片

任务

实现自动化办公,对请假条.docx文件实现自动插入请假人签名图片。
在这里插入图片描述

技术方案

1.python-docx

python-docx是一个用于创建和更新 Microsoft Word (.docx) 文件的 Python 库。

2.Java Poi-tl

poi-tl(poi template language)是Word模板引擎,基于Microsoft Word模板和数据生成新的文档

在经过互联网一番搜索资源后,结合实用性,最终选择了***python-docx***来实现我们的任务。

实验

1.获取需要插入的位置

​ 首先我们需要分析一下Word文件。Word文件由两种类型组成,doc或docx。doc是Word 2007之前的版本,docx则是Word 2007及之后的版本。***python-docx***仅支持对docx文件的处理。

​ 如任务中需要添加请假人的手写签名。我们需要获取请假人的位置并在其后添加。在 python-docx官方文档我们可以找到如下提供为段落的方法。红框中所圈表示add_run()方法提供了在当前段落后追加操作。此时我们得
在这里插入图片描述
到的信息是可以通过段落对象来操作Word文档。还需要的信息是请假人位于哪个段落。文档中的段落与我们视觉上看到段落是有差别的,例如文档中的段落包含回车,每一个回车可能也算一个段落。这样我们就需要分析docx文件的构成了。

​ 早期的Word文件采用二进制存储文件形成后缀名为doc的文件。docx文件采用xml方式记录信息,由众多xml文件合成。将请假条.docx修改其后缀名为**.zip得到请假条.zip**文件。其构成如下图所示:
在这里插入图片描述
在这里插入图片描述

​ 展开word文件夹,红色方框所圈即document.xml记录文档的构成信息。将document.xml使用浏览器打开,并展开段落节点,得到如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7NENV0ky-1648211787424)(C:\Users\zhou\AppData\Roaming\Typora\typora-user-images\image-20220325193137056.png)]

p开头表示段落(paragraph),共有7个方框表示请假人字段位于第7个段落。

2.编写python代码
from docx import Document


document = Document(r"请假条.docx")
run = document.paragraphs[6].add_run()
run.add_picture(r'monty-truth.png')

document.save(r"请假条.docx")

3.实现效果
在这里插入图片描述

工具

PyCharm社区版 编译器

Anaconda 构建运行的虚拟环境

python-docx 库函数

扩展

1.本博客采用技术为无标记添加照片信息,适用于已完成的文档替换或追加信息。

2.批量处理仅需遍历文件夹即可。

3.对doc文件的处理,可将doc文件通过pywin32库转换成docx文件再进行处理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值