在 Python 中從郵件合併模板生成 MS Word 文檔

MS Word 郵件合併是一個流行的功能,它允許您創建信件、發票、信封、報告等。使用郵件合併,您可以創建一個模板並用數據填充它。結果,為數據源中的每個條目生成一個文檔。為了自動執行此功能,本文介紹瞭如何使用 Python 執行 MS Word 郵件合併。您將學習如何從頭開始創建郵件合併模板並以編程方式填充它。

用於自動化 MS Word 郵件合併的 Python 庫

為了自動化 MS Word 郵件合併,我們將使用 Aspose.Words for Python。它是一個功能強大的庫,可讓您創建和操作 Word 文檔。此外,它允許您創建郵件合併模板並無縫填充它們。 Aspose.Words for Python 可以使用以下 pip 命令從 PyPI 安裝。

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 的其他功能。如果您有任何問題,請隨時將其發佈到我們的論壇

也可以看看