Genera documenti MS Word dal modello di stampa unione in Python

La stampa unione di MS Word è una funzionalità popolare che consente di creare lettere, fatture, buste, rapporti, ecc. Utilizzando la stampa unione, è possibile creare un modello e popolarlo con i dati. Di conseguenza, viene generato un documento per ogni voce nell’origine dati. Per automatizzare questa funzione, questo articolo illustra come eseguire la stampa unione di MS Word utilizzando Python. Imparerai come creare un modello di stampa unione da zero e popolarlo a livello di codice.

Libreria Python per automatizzare la stampa unione di MS Word

Per automatizzare la stampa unione di MS Word, utilizzeremo Aspose.Words for Python. È una potente libreria che ti consente di creare e manipolare documenti Word. Inoltre, ti consente di creare i modelli di stampa unione e di popolarli senza problemi. Aspose.Words per Python può essere installato da PyPI usando il comando pip seguente.

pip install aspose-words 

Crea un modello di stampa unione in Python

Un modello di stampa unione contiene campi di unione che vengono compilati con i valori nell’origine dati. Il modello potrebbe essere in formato DOT, DOTX, DOC o DOCX. Per creare un modello di stampa unione, puoi utilizzare MS Word. Tuttavia, per automatizzare questa procedura in Python, puoi seguire i passaggi seguenti.

  • Crea un oggetto della classe DocumentBuilder.
  • Inserisci il testo usando il metodo DocumentBuilder.inserttextinput().
  • Inserisci il campo di unione utilizzando il metodo DocumentBuilder.insertfield().
  • Ripetere l’inserimento del testo e unire i campi come richiesto.
  • Salva il modello come file utilizzando il metodo DocumentBuilder.document.save().

L’esempio di codice seguente mostra come creare un modello di stampa unione DOCX usando Python.

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")

Quello che segue è lo screenshot del modello che abbiamo appena creato usando l’esempio di codice sopra.

creazione di un modello di stampa unione in python

Genera documento Word utilizzando il modello di stampa unione in Python

Ora, dopo aver creato il modello di stampa unione, è il momento di popolare i suoi campi con i valori. Di seguito sono riportati i passaggi per generare un documento Word da un modello di stampa unione in Python.

  • Carica il modello di stampa unione utilizzando la classe Document.
  • Chiama il metodo Document.mailmerge.execute() e passa i dati sotto forma di un array.
  • Salva il documento generato usando il metodo Document.save().

Nell’esempio di codice seguente viene illustrato come generare un documento di Word dal modello di stampa unione.

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")

Lo screenshot seguente mostra il documento Word che abbiamo generato dal modello di stampa unione.

genera un documento word dal modello di stampa unione in python

Ottieni una licenza gratuita

Puoi utilizzare Aspose.Words per Python senza limitazioni di valutazione ottenendo una licenza temporanea gratuita.

Conclusione

La stampa unione di MS Word è una funzione utile per generare documenti Word da modelli predefiniti. Per automatizzare la stampa unione, questo articolo ha spiegato come creare modelli di stampa unione e popolarli con i dati in Python. Puoi anche esplorare altre funzionalità di Aspose.Words per Python usando la documentazione. In caso di domande, non esitare a pubblicarle nel nostro forum.

Guarda anche