在一些的项目开发中,会有一些生成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文档相关推荐

  1. python把数组写入word_Python中 将数据插入到Word模板并生成一份Word

    首先,我们需要安装docx-mailmerge包.在命令行中输入语句开始安装包.pip安装docx-mailmerge如果包已经安装在你的系统中,系统将提示如下.完成docx-mailmerge的安装 ...

  2. python复制csv数据_如何在python中将数据从一个csv复制到另一个csv?

    熊猫是一个很好的工具,但在这里是过度杀戮.csv模块就足够了,DictReader和DictWriter自动执行您需要的操作: 假设:输入:输出文件模板的第一行中最初包含头 要处理包含输出文件头子集的 ...

  3. 如何在Python中将数字文件存储在数据库中

    Databases like MySQL and PostgreSQL are all ideal for storing tables with numeric and text data. How ...

  4. 【Elasticsearch】我们如何在 5 天内在同一个 Elasticsearch 集群中重新索引 360 亿份文档

    1.概述 翻译:https://thoughts.t37.net/how-we-reindexed-36-billions-documents-in-5-days-within-the-same-el ...

  5. POI操作word模板并生成新的word.docx

    XWPFDocument对象 POI是apache提供的可以操作word文档的第三方jar.POI能操作word是使用XWPFDocument对象. XWPFDocument对象可以解析docx文件, ...

  6. 如何在Python中将字典键作为列表返回?

    本文翻译自:How to return dictionary keys as a list in Python? In Python 2.7 , I could get dictionary keys ...

  7. python在docx指定位置插表格_超简单Python将指定数据插入到docx模板指定位置渲染并保存...

    超简单Python将指定数据插入到docx模板渲染并生成 最近有一个需求,制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决.为了 ...

  8. dw html怎么导入视频,如何在dw中将视频插入

    如何在dw中将视频插入 电脑版Dreamweaver工具被很多人使用,用来编辑视频等,有的用户在使用该软件时,想要插入需要编辑的视频,但是却不知道如何插入,那么小编就来为大家介绍一下吧. 具体如下: ...

  9. python中奇数怎么表示_如何在python输出数据中的奇数

    如何在python输出数据中的奇数 发布时间:2020-07-10 17:08:48 来源:亿速云 阅读:131 这篇文章将为大家详细讲解有关如何在python输出数据中的奇数,文章内容质量较高,因此 ...

最新文章

  1. IOS开发笔记2-C语言基础复习
  2. @SentinelResource注解实现热点限流
  3. fedora如何隐藏顶部状态栏_藏在 iOS 13 里的 9 个隐藏小技巧
  4. Android 代码执行Linux Shell小记
  5. 011游移方位惯导系统的力学编排之指令角速度
  6. 开源中国上几款免费又好用的OA协同办公系统,真心不错!
  7. 人工智能AI学习教程
  8. Mapped Statements collection does not contain value for错误可能
  9. mysql触发器——NEW与OLD解析
  10. lizzieyzy使用智星云GPU算力
  11. 群聊比单聊,为什么复杂这么多?
  12. DSS 启动关闭脚本
  13. 计算机安装win10配置,win11发布了,那么安装win11配置要求是什么?win11配置要求详解...
  14. 【Microsoft Visual Studio 2010完成CLR窗体应用程序】计算器和画图板的设计
  15. 磨金石教育摄影技能干货分享:学会这些视频构图法手机也能拍大片
  16. 【Linux系统编程(六)】无名管道
  17. 数据结构课设 词频统计
  18. 完美解码(超强多功能播放器) v20190811官方无广告纯净版
  19. ElasticSearch(ES)介绍
  20. 模拟乘客进站流程 python

热门文章

  1. linux patch使用方法,Linux patch命令
  2. 【Linux】进程控制2-进程等待
  3. 自定义控件——环形进度条
  4. 你学过的每样东西,都会在你一生中的某个时刻派上用场
  5. 高频电路相关知识(四)
  6. 《期权、期货及其他衍生产品》读书笔记(第一章:导论)
  7. 线性代数计算器C语言程序,新手作品:行列式计算C语言版
  8. spring.factories详解
  9. 使用Python更快速地处理Excel
  10. 基于SSH的超市管理系统