Python创建并执行邮件合并,定制Word文档轻松批量创建

发布于:2024-04-18 ⋅ 阅读:(31) ⋅ 点赞:(0)

邮件合并是现代办公中一项显著提升效率的技术,它巧妙地将大量个体数据与预设的文档模板相结合,实现了一次性批量生成定制化文档。这一过程不仅极大地节省了手动重复录入的时间,更确保了信息传递的一致性和准确性,广泛应用于诸如批量信函、个性化报表、邀请卡制作等场景。而Python,作为一种高度灵活且功能强大的编程语言,为自动化处理此类任务提供了理想的平台。本篇文章将聚焦于如何运用Python在Word文档中构建邮件合并域,并阐述执行邮件合并的方法,进一步提升办公自动化水平与工作效率。

本文所使用的方法需要用到Spire.Doc for Python,PyPI:pip install Spire.Doc

申请免费License

用Python在Word文档中创建邮件合并域

Paragraph.AppendField() 方法可以在Word文档中指定段落插入域,而将域名称和 FieldType.FieldMergeField 作为该方法的参数就可以创建邮件合并域了。详细操作步骤如下:

  1. 导入所需模块。
  2. 创建 Document 对象。
  3. Document.LoadFromFile() 方法载入Word文档。
  4. Document.Sections.get_Item() 方法获取一个节。
  5. Section.Paragraphs.get_Item() 方法获取要插入邮件合并域的段落。
  6. Paragraph.AppendField() 方法将邮件合并域添加到段落中。
  7. Document.SaveToFile() 方法保存文档。
  8. 释放资源。

代码示例

from spire.doc import *
from spire.doc.common import *

# 创建Document类对象
doc = Document()

# 加载Word文档
doc.LoadFromFile("示例.docx")

# 获取节(section)
section = doc.Sections.get_Item(1)

# 获取要添加邮件合并域的段落
para1 = section.Paragraphs.get_Item(0)
para2 = section.Paragraphs.get_Item(1)
para3 = section.Paragraphs.get_Item(2)

# 添加邮件合并域,并指定域名称
para1.AppendField("姓名", FieldType.FieldMergeField)
para2.AppendField("年龄", FieldType.FieldMergeField)
para3.AppendField("电话", FieldType.FieldMergeField)

# 保存文档
doc.SaveToFile("output/邮件合并域.docx", FileFormat.Docx)
doc.Close()

结果文档
Python创建Word文档邮件合并域

用Python执行Word文档邮件合并

用 Document.MailMerge.Execute() 方法并将邮件合并域名称列表和数据列表作为参数,就可以在Word文档中执行邮件合并操作,将合并域设定为指定的内容,从而实现定制文档的批量创建。以下是详细操作步骤:

  1. 导入所需模块。
  2. 创建 Document 对象。
  3. Document.LoadFromFile() 方法载入Word文档。
  4. Document.MailMerge.GetMergeFieldNames() 方法以列表形式获取邮件合并域名称。
  5. 循环浏览数据源:
    • Document.MailMerge.Execute() 方法使用指定数据执行邮件合并。
    • Document.SaveToFile() 方法保存文档。
  6. 释放资源。

代码示例

from spire.doc import *
from spire.doc.common import *

# 创建Document类的实例
doc = Document()

# 加载带有邮件合并字段的Word文档
doc.LoadFromFile("output/邮件合并域.docx")

# 获取邮件合并域名称列表
fieldNames = doc.MailMerge.GetMergeFieldNames()

# 指定数据源
dataSource = member_data = [
    ["Alice Johnson", "35", "+1-555-123-4567"],
    ["Bob Williams", "42", "+1-555-765-4321"],
    ["Charlie Brown", "28", "+44-1234-567890"],
]

# 遍历数据源
for i in range(len(dataSource)):
    # 执行邮件合并
    doc.MailMerge.Execute(fieldNames, dataSource[i])
    # 保存文档
    doc.SaveToFile(f"output/会员/会员-{dataSource[i][0]}.docx")
doc.Close()

结果文档
Python执行Word文档邮件合并

本文演示了如何使用Python在Word文档中创建邮件合并域以及在文档中执行邮件合并操作并批量创建定制化Word文档。

更多Word文档操作技巧请前往Spire.Doc for Python教程查看。