Generera MS Word-dokument från Mail Merge Mall i Python

MS Word sammanslagning är en populär funktion som låter dig skapa brev, fakturor, kuvert, rapporter, etc. Med hjälp av sammanslagning kan du skapa en mall och fylla i den med data. Som ett resultat genereras ett dokument för varje post i datakällan. För att automatisera den här funktionen tar den här artikeln upp hur man utför MS Word-utskick med Python. Du kommer att lära dig hur du skapar en mall för koppling av e-post från början och fyller i den programmatiskt.

Python-bibliotek för att automatisera MS Word Mail Merge

För att automatisera MS Word-utskick kommer vi att använda Aspose.Words for Python. Det är ett kraftfullt bibliotek som låter dig skapa och manipulera Word-dokument. Dessutom låter det dig skapa mallar för sammanslagning och fylla i dem sömlöst. Aspose.Words för Python kan installeras från PyPI med följande pip-kommando.

pip install aspose-words 

Skapa en mall för e-postkoppling i Python

En kopplingsmall innehåller kopplingsfält som är ifyllda med värdena i datakällan. Mallen kan ha formatet DOT, DOTX, DOC eller DOCX. För att skapa en kopplingsmall kan du använda MS Word. Men för att automatisera denna procedur i Python kan du följa stegen nedan.

  • Skapa ett objekt av klassen DocumentBuilder.
  • Infoga text med metoden DocumentBuilder.inserttextinput().
  • Infoga sammanslagningsfältet med metoden DocumentBuilder.insertfield().
  • Upprepa infogning av text och slå samman fält efter behov.
  • Spara mallen som en fil med metoden DocumentBuilder.document.save().

Följande kodexempel visar hur man skapar en DOCX-mall för koppling av brev med Python.

import aspose.words as aw

# Skapa en dokumentbyggare
builder = aw.DocumentBuilder()

# Infoga ett textinmatningsfält det unika namnet på detta fält är "Hej", de andra parametrarna definierar
# vilken typ av FormField det är, formatet på texten, fältresultatet och den maximala textlängden (0 = ingen gräns)
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)

# Infoga en styckebrytning i dokumentet
builder.insert_paragraph()

# Infoga meddelandetext
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()

# Infoga e-postslut
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")

# Spara mallen som en DOCX-fil
builder.document.save("mail_merge_template.docx")

Följande är skärmdumpen av mallen vi just har skapat med hjälp av kodexemplet ovan.

skapa en kopplingsmall i python

Generera Word-dokument med Mail Merge-mall i Python

Nu när du har skapat mallen för sammankoppling av utskrifter är det dags att fylla i dess fält med värden. Följande är stegen för att skapa ett Word-dokument från en kopplingsmall i Python.

  • Ladda kopplingsmallen med dokumentklassen.
  • Anropa metoden Document.mailmerge.execute() och skicka data i form av en array.
  • Spara det genererade dokumentet med metoden Document.save().

Följande kodexempel visar hur man genererar ett Word-dokument från en mall för sammanslagning.

import aspose.words as aw

# Ladda kopplingsmallen
doc = aw.Document("mail_merge_template.docx")

# Fyll i fälten i dokumentet med data
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"]
    )

# Spara dokumentet
doc.save("mail_merge_populated.docx")

Följande skärmdump visar Word-dokumentet som vi har genererat från mallen för sammankoppling av brev.

generera word-dokument från mall för sammanslagning i python

Skaffa en gratis licens

Du kan använda Aspose.Words för Python utan utvärderingsbegränsningar genom att skaffa en gratis tillfällig licens.

Slutsats

MS Word-utskick är en användbar funktion för att skapa Word-dokument från fördefinierade mallar. För att automatisera kopplingen av e-post, behandlade den här artikeln hur du skapar mallar för koppling av e-post och fyller dem med data i Python. Du kan också utforska andra funktioner i Aspose.Words for Python med hjälp av dokumentationen. Om du skulle ha några frågor får du gärna posta dem på vårt forum.

Se även