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 中創建郵件合併模板
郵件合併模板包含用數據源中的值填充的合併字段。模板可以是 DOT、DOTX、DOC 或 DOCX 格式。為了創建郵件合併模板,您可以使用 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 中使用郵件合併模板生成 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 文檔。
獲得免費許可證
通過獲得免費臨時許可,您可以不受評估限制地使用 Aspose.Words for Python。
結論
MS Word 郵件合併是一個有用的功能,可以從預定義的模板生成 Word 文檔。為了自動化郵件合併,本文介紹瞭如何創建郵件合併模板並使用 Python 中的數據填充它們。您還可以使用 文檔 探索 Aspose.Words for Python 的其他功能。如果您有任何問題,請隨時將其發佈到我們的論壇。