Generuj dokumenty MS Word z szablonu korespondencji seryjnej w Python

Korespondencja seryjna MS Word to popularna funkcja umożliwiająca tworzenie listów, faktur, kopert, raportów itp. Korzystając z korespondencji seryjnej, można utworzyć szablon i wypełnić go danymi. W rezultacie dla każdego wpisu w źródle danych generowany jest dokument. Aby zautomatyzować tę funkcję, w tym artykule omówiono sposób przeprowadzania korespondencji seryjnej programu MS Word przy użyciu języka Python. Dowiesz się, jak utworzyć szablon korespondencji seryjnej od podstaw i wypełniać go programowo.

Biblioteka Python do automatyzacji korespondencji seryjnej MS Word

Do automatyzacji korespondencji seryjnej MS Word użyjemy Aspose.Words for Python. Jest to potężna biblioteka, która pozwala tworzyć dokumenty Word i manipulować nimi. Ponadto pozwala tworzyć szablony korespondencji seryjnej i bezproblemowo je wypełniać. Aspose.Words for Python można zainstalować z PyPI za pomocą następującego polecenia pip.

pip install aspose-words 

Utwórz szablon korespondencji seryjnej w Python

Szablon korespondencji seryjnej zawiera pola korespondencji seryjnej, które są wypełniane wartościami ze źródła danych. Szablon może być w formacie DOT, DOTX, DOC lub DOCX. Aby utworzyć szablon korespondencji seryjnej, możesz użyć programu MS Word. Aby jednak zautomatyzować tę procedurę w Python, możesz wykonać poniższe kroki.

  • Utwórz obiekt klasy DocumentBuilder.
  • Wstaw tekst za pomocą metody DocumentBuilder.inserttextinput().
  • Wstaw pole scalania za pomocą metody DocumentBuilder.insertfield().
  • W razie potrzeby powtórz wstawianie tekstu i scalanie pól.
  • Zapisz szablon jako plik przy użyciu metody DocumentBuilder.document.save().

Poniższy przykładowy kod pokazuje, jak utworzyć szablon korespondencji seryjnej DOCX przy użyciu języka Python.

import aspose.words as aw

# Utwórz narzędzie do tworzenia dokumentów
builder = aw.DocumentBuilder()

# Wstaw pole wprowadzania tekstu. Unikalna nazwa tego pola to „Hello”, inne parametry określają
# jaki to typ FormField, format tekstu, wynik pola i maksymalna długość tekstu (0 = bez limitu)
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)

# Wstaw podział akapitu do dokumentu
builder.insert_paragraph()

# Wstaw treść wiadomości
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()

# Wstaw zakończenie wiadomości
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")

# Zapisz szablon jako plik DOCX
builder.document.save("mail_merge_template.docx")

Poniżej znajduje się zrzut ekranu szablonu, który właśnie utworzyliśmy przy użyciu powyższego przykładowego kodu.

tworzenie szablonu korespondencji seryjnej w Python

Wygeneruj dokument programu Word za pomocą szablonu korespondencji seryjnej w Python

Po utworzeniu szablonu korespondencji seryjnej nadszedł czas na wypełnienie jego pól wartościami. Poniżej przedstawiono kroki generowania dokumentu programu Word z szablonu korespondencji seryjnej w języku Python.

  • Załaduj szablon korespondencji seryjnej przy użyciu klasy Document.
  • Wywołaj metodę Document.mailmerge.execute() i przekaż dane w postaci tablicy.
  • Zapisz wygenerowany dokument za pomocą metody Document.save().

Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word z szablonu korespondencji seryjnej.

import aspose.words as aw

# Załaduj szablon korespondencji seryjnej
doc = aw.Document("mail_merge_template.docx")

# Wypełnij pola w dokumencie danymi
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"]
    )

# Zapisz dokument
doc.save("mail_merge_populated.docx")

Poniższy zrzut ekranu przedstawia dokument programu Word, który wygenerowaliśmy na podstawie szablonu korespondencji seryjnej.

wygeneruj dokument Word z szablonu korespondencji seryjnej w Python

Uzyskaj bezpłatną licencję

Możesz używać Aspose.Words for Python bez ograniczeń ewaluacyjnych, otrzymując bezpłatną licencję tymczasową.

Wniosek

Korespondencja seryjna MS Word to przydatna funkcja do generowania dokumentów Word z predefiniowanych szablonów. Aby zautomatyzować korespondencję seryjną, w tym artykule omówiono sposób tworzenia szablonów korespondencji seryjnej i wypełniania ich danymi w języku Python. Możesz także zapoznać się z innymi funkcjami Aspose.Words for Python, korzystając z dokumentacji. Jeśli masz jakieś pytania, możesz je zadać na naszym forum.

Zobacz też