Generieren Sie MS Word Dokumente aus der Serienbriefvorlage in Python

Der MS Word-Seriendruck ist eine beliebte Funktion, mit der Sie Briefe, Rechnungen, Umschläge, Berichte usw. erstellen können. Mithilfe des Seriendrucks können Sie eine Vorlage erstellen und diese mit den Daten füllen. Als Ergebnis wird für jeden Eintrag in der Datenquelle ein Dokument generiert. Um diese Funktion zu automatisieren, beschreibt dieser Artikel, wie Sie MS Word-Seriendrucke mit Python durchführen. Sie erfahren, wie Sie eine Serienbriefvorlage von Grund auf neu erstellen und programmgesteuert füllen.

Python Bibliothek zur Automatisierung des MS Word-Seriendrucks

Um den MS Word-Seriendruck zu automatisieren, verwenden wir Aspose.Words for Python. Es ist eine leistungsstarke Bibliothek, mit der Sie Word Dokumente erstellen und bearbeiten können. Darüber hinaus können Sie die Serienbriefvorlagen erstellen und nahtlos füllen. Aspose.Words for Python kann mit dem folgenden Pip Befehl von PyPI installiert werden.

pip install aspose-words 

Erstellen Sie eine Serienbriefvorlage in Python

Eine Seriendruckvorlage enthält Briefvorlagenfelder, die mit den Werten in der Datenquelle gefüllt werden. Die Vorlage kann im Format DOT, DOTX, DOC oder DOCX vorliegen. Um eine Serienbriefvorlage zu erstellen, können Sie MS Word verwenden. Um diesen Vorgang jedoch in Python zu automatisieren, können Sie die folgenden Schritte ausführen.

  • Erstellen Sie ein Objekt der DocumentBuilder Klasse.
  • Fügen Sie Text mit der methode DocumentBuilder.insert\text\input() ein.
  • Fügen Sie das Briefvorlagenfeld mit der methode DocumentBuilder.insert\field() ein.
  • Wiederholen Sie das Einfügen von Text und Zusammenführungsfeldern nach Bedarf.
  • Speichern Sie die Vorlage mit der methode DocumentBuilder.document.save() als Datei.

Das folgende Codebeispiel zeigt, wie eine DOCX-Serienbriefvorlage mit Python erstellt wird.

import aspose.words as aw

# Create a document builder
builder = aw.DocumentBuilder()

# Insert a text input field the unique name of this field is "Hello", the other parameters define
# what type of FormField it is, the format of the text, the field result and the maximum text length (0 = no limit)
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)

# Insert a paragraph break into the document
builder.insert_paragraph()

# Insert mail body
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()

# Insert mail ending
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")

# Save the template as a DOCX file
builder.document.save("mail_merge_template.docx")

Das Folgende ist der Screenshot der Vorlage, die wir gerade mit dem obigen Codebeispiel erstellt haben.

Erstellen einer Seriendruckvorlage in Python

Erstellen Sie ein Word Dokument mit der Serienbriefvorlage in Python

Nachdem Sie die Seriendruckvorlage erstellt haben, ist es an der Zeit, ihre Felder mit Werten zu füllen. Im Folgenden sind die Schritte zum Generieren eines Word Dokuments aus einer Seriendruckvorlage in Python aufgeführt.

  • Laden Sie die Seriendruckvorlage mithilfe der Document Klasse.
  • Rufen Sie die Methode Document.mail\merge.execute() auf und übergeben Sie Daten in Form eines Arrays.
  • Speichern Sie das generierte Dokument mit der methode Document.save().

Das folgende Codebeispiel zeigt, wie ein Word Dokument aus einer Seriendruckvorlage generiert wird.

import aspose.words as aw

# Load the mail merge template
doc = aw.Document("mail_merge_template.docx")

# Fill the fields in the document with 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"]
    )

# Save the document
doc.save("mail_merge_populated.docx")

Der folgende Screenshot zeigt das Word Dokument, das wir aus der Seriendruckvorlage generiert haben.

Erstellen Sie ein Word Dokument aus einer Seriendruckvorlage in Python

Holen Sie sich eine kostenlose Lizenz

Sie können Aspose.Words for Python ohne Evaluierungseinschränkungen verwenden, indem Sie eine kostenlose temporäre Lizenz erwerben.

Fazit

MS Word-Seriendruck ist eine nützliche Funktion, um Word Dokumente aus vordefinierten Vorlagen zu erstellen. Um den Seriendruck zu automatisieren, wurde in diesem Artikel beschrieben, wie Serienbriefvorlagen erstellt und mit Daten in Python gefüllt werden. Sie können auch andere Funktionen von Aspose.Words for Python mithilfe der Dokumentation erkunden. Falls Sie Fragen haben, können Sie diese gerne in unserem Forum posten.

Siehe auch