Python|用Python自动化生成Word文档

Python|用Python自动化生成Word文档
文章图片

Python|用Python自动化生成Word文档

文章图片

Python|用Python自动化生成Word文档

文章图片

Python|用Python自动化生成Word文档

文章图片

Python|用Python自动化生成Word文档

文章图片

Python|用Python自动化生成Word文档

文章图片

Python|用Python自动化生成Word文档

文章图片



大家好 , 欢迎收看思路实验室出品的Python入门教程 , 我是室长 。
在上一期我们了解了如何使用Word的邮件合并功能来批量地生成Word文档 。 说实话这个过程有点像Python中对字符串添加f前缀来向字符串中插入变量值 。 不同在于向字符串中插入的变量是由花括号括起来的 , 而在Word中则是书名号 。
在Word中 , 这种“变量”被称为域 。 域在Word中可以说是神通广大 , 不管是页码、目录还是参考文献引用 , 用上域绝对会让你事半功倍 。 不过今天我们还是专注于邮件合并中的域 。
在邮件合并功能中 , 每个域起到的都是变量的“占坑位”功能 。 所以邮件合并的顺序是这样的:
首先 , 给Word文档挖好坑(放置好域) 。
其次 , 准备好数据表格 。
最后 , 把数据表格中的值对号入座填入坑里 , 每一行数据就生成一个新的文档 。
对于普通的办公族来说 , 学会这些已经是飞跃式的进步了 。 但我们不一样 , 毕竟我们是学了那么久Python的人 , 懒的程度已经突破天际了 。 为什么非要把数据整理到表格里再填入Word , 为什么还要一步一步跟着邮件合并向导走?完全没必要啊!
今天室长就来教大家用Python来自动化生成Word文档!
首先绕不过去的一步还是给Word文档挖坑 , 建立文档模板 。 不过这回我们并不需要使用邮件合并向导 , 而是直接在文档里插入域 。 将光标移至想要挖坑的位置 , 点击插入选项卡→文档部件→域:

选择域类别为邮件合并 , 域名为MergeField , 域属性里的域名由自己来设定 , 其他选项也根据自己的需求进行设定 。

可以看到带有书名号的域名就出现在了文档的相应位置 。 我们可以点击这个域 , 发现整个域的背景变成了灰色 , 证明这是一个整体 。 还可以拖动光标将域选上 , 对其格式进行修改 , 这样的话当域填充了内容时 , 内容也会是这个格式 。

我们再多挖几个:

坑挖好了 , 我们就可以进入编程的阶段了 。 使用Python实现邮件合并功能需要安装额外的模块 , 这方面的模块有几个 , 这里室长选择的是docx-mailmerge2模块 。 需要注意安装之后我们要导入的模块名是mailmerge而不是docx-mailmerge2 。 我们可以直接导入模块中的MailMerge类:

随后创建MailMerge的实例 , 参数是文档模板的路径 。

这样我们的模板就准备好了 。 接下来我们可以使用merge方法向模板中填入数据 , merge方法中的关键字参数就是我们在Word文档中各个域的域名:

【Python|用Python自动化生成Word文档】当然 , 最重要的就是把填好内容的文档存储下来 , 这里需要调用write方法:

赶快打开看看吧: