如何在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可以使用Openpyxl库读取和处理Excel数据,使用python-docx库创建和操作Word文档。 要将Excel数据插入Word模板生成详细内容文档,我们需要以下步骤: 1. 使用Openpyxl库打开Excel文件,并选择要读取的工作表。 2. 使用Openpyxl库的方法读取Excel数据,并保存到一个变量。 3. 使用python-docx库创建一个新的Word文档,并选择要操作的文档元素(如段落、表格等)。 4. 根据Word模板的需求,在相应的位置插入Excel数据。可以使用python-docx库提供的方法在文档添加段落、表格和图片。 5. 使用python-docx库的保存方法,将生成Word文档保存到指定位置。 下面是一个示例代码,演示了如何将Excel数据插入Word模板生成详细内容文档: ```python from openpyxl import load_workbook from docx import Document # 打开Excel文件和选择工作表 workbook = load_workbook('data.xlsx') sheet = workbook['Sheet1'] # 创建一个新的Word文档 doc = Document() # 读取Excel数据并将其插入Word文档 for row in sheet.iter_rows(values_only=True): # 在Word文档插入段落,显示Excel数据 doc.add_paragraph(f"姓名:{row[0]}") doc.add_paragraph(f"年龄:{row[1]}") doc.add_paragraph(f"性别:{row[2]}") doc.add_paragraph("") # 保存生成Word文档 doc.save('output.docx') ``` 这样,我们就可以通过读取Excel数据并将其插入Word模板生成详细内容文档。记得安装和导入相应的库,以及根据实际需求修改代码,比如根据模板的样式信息设置Word文档的格式。
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值