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
- Criar um modelo de mala direta do MS Word
- Gerar documento do Word usando o modelo de mala direta
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.
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.
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.