Genere documentos de MS Word a partir de una plantilla de combinación de correspondencia en Python

La combinación de correspondencia de MS Word es una característica popular que le permite crear cartas, facturas, sobres, informes, etc. Con la combinación de correspondencia, puede crear una plantilla y completarla con los datos. Como resultado, se genera un documento para cada entrada en la fuente de datos. Para automatizar esta característica, este artículo cubre cómo realizar la combinación de correspondencia de MS Word usando Python. Aprenderá cómo crear una plantilla de combinación de correspondencia desde cero y cómo completarla mediante programación.

Biblioteca de Python para automatizar la combinación de correspondencia de MS Word

Para automatizar la combinación de correspondencia de MS Word, usaremos Aspose.Words for Python. Es una poderosa biblioteca que le permite crear y manipular documentos de Word. Además, le permite crear las plantillas de combinación de correspondencia y completarlas sin problemas. Aspose.Words for Python se puede instalar desde PyPI usando el siguiente comando pip.

pip install aspose-words 

Crear una plantilla de combinación de correspondencia en Python

Una plantilla de combinación de correo contiene campos de combinación que se rellenan con los valores del origen de datos. La plantilla podría tener el formato DOT, DOTX, DOC o DOCX. Para crear una plantilla de combinación de correo, puede usar MS Word. Sin embargo, para automatizar este procedimiento en Python, puede seguir los pasos a continuación.

  • Crea un objeto de la clase DocumentBuilder.
  • Inserte texto usando el método DocumentBuilder.insert\text\input().
  • Inserte el campo de combinación usando el método DocumentBuilder.insert\field().
  • Repita la inserción de texto y fusione campos según sea necesario.
  • Guarde la plantilla como un archivo usando el método DocumentBuilder.document.save().

El siguiente ejemplo de código muestra cómo crear una plantilla de combinación de correspondencia 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")

La siguiente es la captura de pantalla de la plantilla que acabamos de crear utilizando el ejemplo de código anterior.

crear una plantilla de combinación de correspondencia en python

Genere un documento de Word usando la plantilla de combinación de correspondencia en Python

Ahora, cuando haya creado la plantilla de combinación de correo, es hora de completar sus campos con valores. Los siguientes son los pasos para generar un documento de Word a partir de una plantilla de combinación de correspondencia en Python.

  • Cargue la plantilla de combinación de correspondencia usando la clase Document.
  • Llame al método Document.mail\merge.execute() y pase los datos en forma de matriz.
  • Guarde el documento generado utilizando el método Document.save().

El siguiente ejemplo de código muestra cómo generar un documento de Word a partir de una plantilla de combinación de correspondencia.

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

La siguiente captura de pantalla muestra el documento de Word que hemos generado a partir de la plantilla de combinación de correspondencia.

generar un documento de Word a partir de una plantilla de combinación de correspondencia en python

Obtenga una licencia gratis

Puede usar Aspose.Words for Python sin limitaciones de evaluación al obtener una licencia temporal gratuita.

Conclusión

La combinación de correspondencia de MS Word es una función útil para generar documentos de Word a partir de plantillas predefinidas. Para automatizar la combinación de correspondencia, este artículo cubrió cómo crear plantillas de combinación de correspondencia y llenarlas con datos en Python. También puede explorar otras características de Aspose.Words for Python utilizando la documentación. En caso de que tenga alguna pregunta, no dude en publicarla en nuestro foro.

Ver también