docx-mailmerge
。它是一个成熟的包,可以解析MS Word docx文件,找到 合并字段
并将您需要的任何值填充给它们。该包还支持一些辅助函数,用于填充表并生成具有多个分页符的单个文件。mailmerge
,但本文中的这个 “mailmerge”
可以是一个有用的模板系统,可以用于更复杂的解决方案,而不仅仅是填充文档中的 名称和地址
。安装
docx-mailmerge
需要依赖 lxml
,所以需要先安装lxml,再安装 docx-mailmerge
pip install lxml
pip install docx-mailmerge
合并字段
。以下示例适用于Word 2016.其他版本的Word应该类似。实际上花了我一段时间来弄清楚这个过程,但是一旦你做了几次,这很简单。数据
的位置,并选择插入 - > 域
创建Word文档后,填充字段值是一项很简单的操作。
from mailmerge import MailMerge
import datetime
template = "PracticalPython.docx"
我们的 PracticalPython.docx
文件可以看做是用来给大家群发新年祝福邮件模板。
下面我们先看看docx文档中有哪些合并字段
document = MailMerge(template)
print(document.get_merge_fields())
{'From', 'date', 'FromUserName', 'To', 'ToUserName'}
我们发现 PracticalPython.docx
文档中有我们上图邮件模板中设计的几个 合并字段
,如 From, date, FromUserName, To, ToUserName
。下面我们对这几个变量进行填充。
document.merge(
From='123456dadeng@qq.com',
FromUserName='大邓',
To = '654321guanzhuzhe@qq.com',
ToUserName='关注者的昵称',
date='{:%d-%b-%Y}'.format(datetime.date.today())
)
#输出的docx文件
document.write('output.docx')
这是简单的Word文档填充效果
每个字段
的填充将会非常快。使用merge_rows可以使表格填充更容易。
document2 = MailMerge('purchasehistory.docx')
sales_history = [{
'prod_desc': 'Red Shoes',
'price': '$10.00',
'quantity': '2500',
'total_purchases': '$25,000.00'}, {
'prod_desc': 'Green Shirt',
'price': '$20.00',
'quantity': '10000',
'total_purchases': '$200,000.00'}, {
'prod_desc': 'Purple belt',
'price': '$5.00',
'quantity': '5000',
'total_purchases': '$25,000.00'}]
document2.merge_rows('prod_desc', sales_history)
document2.write('output-table.docx')