在 Python 中从邮件合并模板生成 MS Word 文档

MS Word 邮件合并是一项流行的功能,它允许您创建信件、发票、信封、报告等。使用邮件合并,您可以创建一个模板并用数据填充它。因此,将为数据源中的每个条目生成一个文档。为了自动化此功能,本文介绍了如何使用 Python 执行 MS Word 邮件合并。您将学习如何从头开始创建邮件合并模板并以编程方式填充它。

用于自动化 MS Word 邮件合并的 Python 库

为了自动化 MS Word 邮件合并,我们将使用 Aspose.Words for Python。它是一个功能强大的库,可让您创建和操作 Word 文档。此外,它允许您创建邮件合并模板并无缝填充它们。可以使用以下 pip 命令从 PyPI 安装 Aspose.Words for Python。

pip install aspose-words 

在 Python 中创建邮件合并模板

邮件合并模板包含使用数据源中的值填充的合并字段。模板可以是 DOTDOTXDOCDOCX 格式。为了创建邮件合并模板,您可以使用 MS Word。但是,要在 Python 中自动执行此过程,您可以按照以下步骤操作。

  • 创建 DocumentBuilder 类的对象。
  • 使用 DocumentBuilder.inserttextinput() 方法插入文本。
  • 使用 DocumentBuilder.insertfield() 方法插入合并字段。
  • 根据需要重复插入文本和合并字段。
  • 使用 DocumentBuilder.document.save() 方法将模板保存为文件。

以下代码示例展示了如何使用 Python 创建 DOCX 邮件合并模板。

import aspose.words as aw

# 创建文档构建器
builder = aw.DocumentBuilder()

# 插入一个文本输入字段,该字段的唯一名称是“Hello”,其他参数定义
# 它是什么类型的FormField,文本的格式,字段结果和最大文本长度(0 = 无限制)
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Hello ", 0)
builder.insert_field("MERGEFIELD CustomerFirstName \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, "", " ", 0)
builder.insert_field("MERGEFIELD CustomerLastName \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, "", " , ", 0)

# 在文档中插入段落分隔符
builder.insert_paragraph()

# 插入邮件正文
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Thanks for purchasing our ", 0)
builder.insert_field("MERGEFIELD ProductName \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ", please download your Invoice at ", 0)
builder.insert_field("MERGEFIELD InvoiceURL \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ". If you have any questions please call ", 0)
builder.insert_field("MERGEFIELD Supportphone \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ", or email us at ", 0)
builder.insert_field("MERGEFIELD SupportEmail \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ".", 0)

builder.insert_paragraph()

# 插入邮件结尾
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Best regards,", 0)
builder.insert_break(aw.BreakType.LINE_BREAK)
builder.insert_field("MERGEFIELD EmployeeFullname \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, ",", " ", 0)
builder.insert_field("MERGEFIELD EmployeeDepartment \\* MERGEFORMAT")

# 将模板另存为 DOCX 文件
builder.document.save("mail_merge_template.docx")

以下是我们刚刚使用上面的代码示例创建的模板的屏幕截图。

在 python 中创建邮件合并模板

在 Python 中使用邮件合并模板生成 Word 文档

现在,当您创建了邮件合并模板后,就可以为其字段填充值了。以下是在 Python 中从邮件合并模板生成 Word 文档的步骤。

  • 使用 Document 类加载邮件合并模板。
  • 调用 Document.mailmerge.execute() 方法,以数组的形式传递数据。
  • 使用 Document.save() 方法保存生成的文档。

以下代码示例显示如何从邮件合并模板生成 Word 文档。

import aspose.words as aw

# 加载邮件合并模板
doc = aw.Document("mail_merge_template.docx")

# 用数据填写文档中的字段
doc.mail_merge.execute(["CustomerFirstName", "CustomerLastName", "ProductName", "InvoiceURL", "SupportPhone", "SupportEmail", "EmployeeFullname", "EmployeeDepartment"],
    ["John", "Doe", "Aspose.Words", "aspose.com", "111-222-333", "support@aspose.com", "Jimmy", "Sales"]
    )

# 保存文档
doc.save("mail_merge_populated.docx")

以下屏幕截图显示了我们从邮件合并模板生成的 Word 文档。

从python中的邮件合并模板生成word文档

获得免费许可证

您可以通过获得 免费临时许可证 来使用 Aspose.Words for Python,而不受评估限制。

结论

MS Word 邮件合并是从预定义模板生成 Word 文档的有用功能。为了自动化邮件合并,本文介绍了如何创建邮件合并模板并用 Python 中的数据填充它们。您还可以使用 文档 探索 Aspose.Words for Python 的其他功能。如果您有任何问题,请随时将它们发布到我们的 论坛

也可以看看