Gerar documentos do MS Word a partir do modelo de mala direta em Python

A mala direta do MS Word é um recurso popular que permite criar cartas, faturas, envelopes, relatórios, etc. Usando a mala direta, você pode criar um modelo e preenchê-lo com os dados. Como resultado, um documento é gerado para cada entrada na fonte de dados. Para automatizar esse recurso, este artigo aborda como executar a mala direta do MS Word usando o Python. Você aprenderá como criar um modelo de mala direta do zero e preenchê-lo programaticamente.

Biblioteca Python para automatizar a mala direta do MS Word

Para automatizar a mala direta do MS Word, usaremos Aspose.Words for Python. É uma biblioteca poderosa que permite criar e manipular documentos do Word. Além disso, permite criar os modelos de mala direta e preenchê-los sem problemas. O Aspose.Words for Python pode ser instalado a partir de PyPI usando o seguinte comando pip.

pip install aspose-words 

Criar um modelo de mala direta em Python

Um modelo de mala direta contém campos de mesclagem que são preenchidos com os valores na fonte de dados. O modelo pode ser do formato DOT, DOTX, DOC ou DOCX. Para criar um modelo de mala direta, você pode usar o MS Word. No entanto, para automatizar esse procedimento em Python, você pode seguir as etapas abaixo.

  • Crie um objeto da classe DocumentBuilder.
  • Insira texto usando o método DocumentBuilder.inserttextinput().
  • Insira o campo de mesclagem usando o método DocumentBuilder.insertfield().
  • Repita a inserção de campos de texto e mesclagem conforme necessário.
  • Salve o modelo como um arquivo usando o método DocumentBuilder.document.save().

O exemplo de código a seguir mostra como criar um modelo de mala direta 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")

A seguir está a captura de tela do modelo que acabamos de criar usando o exemplo de código acima.

criando um modelo de mala direta em python

Gerar documento do Word usando o modelo de mala direta em Python

Agora que você criou o modelo de mala direta, é hora de preencher seus campos com valores. A seguir estão as etapas para gerar um documento do Word a partir de um modelo de mala direta em Python.

  • Carregue o modelo de mala direta usando a classe Document.
  • Chame o método Document.mailmerge.execute() e passe os dados na forma de um array.
  • Salve o documento gerado usando o método Document.save().

O exemplo de código a seguir mostra como gerar um documento do Word a partir do modelo de mala direta.

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

A captura de tela a seguir mostra o documento do Word que geramos a partir do modelo de mala direta.

gerar documento do word a partir do modelo de mala direta em python

Obtenha uma licença gratuita

Você pode usar o Aspose.Words para Python sem limitações de avaliação obtendo uma licença temporária gratuita.

Conclusão

A mala direta do MS Word é um recurso útil para gerar documentos do Word a partir de modelos predefinidos. Para automatizar a mala direta, este artigo abordou como criar modelos de mala direta e preenchê-los com dados em Python. Você também pode explorar outros recursos do Aspose.Words for Python usando a documentação. Caso você tenha alguma dúvida, sinta-se à vontade para postá-la em nosso fórum.

Veja também