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
- Utwórz szablon korespondencji seryjnej MS Word
- Wygeneruj dokument programu Word za pomocą szablonu korespondencji seryjnej
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.
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.
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.