如何在Python中将数据插入到Word模板中生成一份Word文档
在一些的项目开发中,会有一些生成Word文件的操作,比如将获取到的一些数据添加到Word模板当中的相应的位置生成一份Word文档。
由于最近的Python项目当中需要将一些从服务器查出的数据添加到Word模板当中生成一份Word文档,完成这个操作需要用到的是Python当中一个叫做docx-mailmerge的包,这个包的作用是解析MS Word docx文件,并且找到合并字段并且用你想要的任何值去填充他们。其实,这个“mailmerge”可以是一个有用的模板系统,可以用于更复杂的解决方案,而不仅仅是填充文档中的名称和地址。
首先,我们需要安装docx-mailmerge这个包。在命令行输入语句,开始安装该包。
pip install docx-mailmerge
如果你的系统中已经安装了该包,系统会有如下的提示。
在完成了docx-mailmerge的安装之后,需要在Word中进行域的设置,这些域就是你的数据填充的位置。
以Word 2013为例,在Word模板当中,将鼠标光标移动到你细腰插入数据的地方,之后按下图所示进行操作:
点击域之后,选择 邮件合并,域名选择MergeField,域名可以理解为你在代码中的一个变量,将你要插入的数据赋值给这个变量,你的数据便会插入到模板当中。另外,格式按照自己的要求去选择,默认为无。
这里我简单的编辑了一个证明的模板,在需要插入数据的地方设置完域之后,结果如下图所示:
在完成前两步工作之后,最后一步就剩下代码的编写工作了。
在本文中,其实这一部分代码非常简单,本文我写一个简单的Demo,其中我的文件名称和给域赋的值都是写死的,在项目中生成的Word名称和给域赋值都可以是变量,还有,模板的位置,生成文件的位置可以改变,生成文件的名字可以是变量,这样,每次生成的docx文件名字就会不一样,比如在我的项目当中,我就将身份证号作为文件名称,这样按照模板生成的docx文件不会出现重复。
document_1.write('F:\\{}.docx'.format(emp_full_info.get("identity_card")))
由于Python默认是Unicode编码,所以字符串赋值前要加u,如果是变量赋值,则可以用decode方法,比如:
Year=year.decode(encoding='UTF-8', errors='strict')
Demo具体的源码:
from mailmerge import MailMerge# 打印模板template = "F:\\WorkingProve11.docx"# 创建邮件合并文档并查看所有字段document_1 = MailMerge(template)print("Fields included in {}: {}".format(template,document.get_merge_fields()))document_1.merge(people_name=u'勒布朗',identity_card_id='123456789',begin_work_year='2018',begin_work_month='7',department_name=u'洛杉矶湖人',job_name=u'联盟第一人')document_1.write('F:\\test666.docx')
最后,在制定的F盘下出现了生成的test666.docx文件,打开之后结果如下图:
最后要注意的一点是,如果在同一位置下生成的两份文件名字一样,代码是会报错的。
解决方法有以下几种:
1.运行程序之前,将原来的文件删除。
2.在代码中将文件名称更改。
3.按照上文我所说的,将文件名称改为变量。
希望本文可以帮助到大家。
如何在Python中将数据插入到Word模板中生成一份Word文档相关推荐
- python把数组写入word_Python中 将数据插入到Word模板并生成一份Word
首先,我们需要安装docx-mailmerge包.在命令行中输入语句开始安装包.pip安装docx-mailmerge如果包已经安装在你的系统中,系统将提示如下.完成docx-mailmerge的安装 ...
- python复制csv数据_如何在python中将数据从一个csv复制到另一个csv?
熊猫是一个很好的工具,但在这里是过度杀戮.csv模块就足够了,DictReader和DictWriter自动执行您需要的操作: 假设:输入:输出文件模板的第一行中最初包含头 要处理包含输出文件头子集的 ...
- 如何在Python中将数字文件存储在数据库中
Databases like MySQL and PostgreSQL are all ideal for storing tables with numeric and text data. How ...
- 【Elasticsearch】我们如何在 5 天内在同一个 Elasticsearch 集群中重新索引 360 亿份文档
1.概述 翻译:https://thoughts.t37.net/how-we-reindexed-36-billions-documents-in-5-days-within-the-same-el ...
- POI操作word模板并生成新的word.docx
XWPFDocument对象 POI是apache提供的可以操作word文档的第三方jar.POI能操作word是使用XWPFDocument对象. XWPFDocument对象可以解析docx文件, ...
- 如何在Python中将字典键作为列表返回?
本文翻译自:How to return dictionary keys as a list in Python? In Python 2.7 , I could get dictionary keys ...
- python在docx指定位置插表格_超简单Python将指定数据插入到docx模板指定位置渲染并保存...
超简单Python将指定数据插入到docx模板渲染并生成 最近有一个需求,制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决.为了 ...
- dw html怎么导入视频,如何在dw中将视频插入
如何在dw中将视频插入 电脑版Dreamweaver工具被很多人使用,用来编辑视频等,有的用户在使用该软件时,想要插入需要编辑的视频,但是却不知道如何插入,那么小编就来为大家介绍一下吧. 具体如下: ...
- python中奇数怎么表示_如何在python输出数据中的奇数
如何在python输出数据中的奇数 发布时间:2020-07-10 17:08:48 来源:亿速云 阅读:131 这篇文章将为大家详细讲解有关如何在python输出数据中的奇数,文章内容质量较高,因此 ...
最新文章
- IOS开发笔记2-C语言基础复习
- @SentinelResource注解实现热点限流
- fedora如何隐藏顶部状态栏_藏在 iOS 13 里的 9 个隐藏小技巧
- Android 代码执行Linux Shell小记
- 011游移方位惯导系统的力学编排之指令角速度
- 开源中国上几款免费又好用的OA协同办公系统,真心不错!
- 人工智能AI学习教程
- Mapped Statements collection does not contain value for错误可能
- mysql触发器——NEW与OLD解析
- lizzieyzy使用智星云GPU算力
- 群聊比单聊,为什么复杂这么多?
- DSS 启动关闭脚本
- 计算机安装win10配置,win11发布了,那么安装win11配置要求是什么?win11配置要求详解...
- 【Microsoft Visual Studio 2010完成CLR窗体应用程序】计算器和画图板的设计
- 磨金石教育摄影技能干货分享:学会这些视频构图法手机也能拍大片
- 【Linux系统编程(六)】无名管道
- 数据结构课设 词频统计
- 完美解码(超强多功能播放器) v20190811官方无广告纯净版
- ElasticSearch(ES)介绍
- 模拟乘客进站流程 python