Introdução: documentos do Word com Python
O formato DOCX é usado para documentos criados pelo Microsoft Word. Ele também pode ser usado em softwares de outros sistemas operacionais como o LibreOffice. Embora a criação e edição de textos com esses softwares não seja difícil, elas podem ser uma perda de tempo desnecessária. Afinal, todos sabemos que o Python é excelente na automação de tarefas cotidianas.
A biblioteca python-docx fornece uma ferramenta poderosa para trabalhar com arquivos DOCX programaticamente usando códigos Python. Neste post, exploraremos como ela pode ser usada para automatizar tarefas de documentos.
Conheça algumas das funcionalidades da biblioteca python-docx
A biblioteca python-docx fornece uma ampla gama de recursos para criar, modificar e extrair informações de documentos do Word. Algumas tarefas comuns que podem ser executadas com ela incluem:
Criação de novos documentos.
Modificação de documentos existentes.
Adição de conteúdo como parágrafos, títulos, tabelas, imagens e muito mais.
Aplicação de formatação.
Extração de textos, imagens, tabelas e outros conteúdos de documentos existentes do Word.
Para realizar essas tarefas, a biblioteca python-docx fornece várias funções para trabalhar com documentos do Word. Algumas dessas funções incluem:
Document(): cria um novo documento do Word.
save(): salva um documento em um arquivo.
add_paragraph(): adicionando parágrafos.
style: propriedade para aplicar estilos e opções de formatação.
Para conhecer melhor essas e outras funções da biblioteca python-docx, a melhor maneira é utilizá-la na prática.
python-docx em código
Para usar a biblioteca, ela precisa ser instalada. Para instalação com pip, digite o comando abaixo no terminal:
pip install python-docx
Após a instalação, importamos os métodos que utilizaremos em um código Python:
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
Criação de documento, títulos e parágrafos
Para criar um documento, basta usar Document().
# Cria um documento
doc = Document()
Para adicionar títulos ao documento, um exemplo de trecho de código é mostrado abaixo. Neste exemplo, o título foi alinhado ao centro:
# Adiciona um título
title = doc.add_heading('Meu título criado com python-docx', level=1)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
Parágrafos podem ser facilmente adicionados com o método add_paragraph(). No trecho abaixo, também foi realizada a formatação do texto com adição de negrito e itálico:
#Adicionar um parágrafo com texto em negrito e itálico
p = doc.add_paragraph('Este é um exemplo de documento criado usando a biblioteca python-docx')
p.add_run(' com negrito').bold = True
p.add_run(' e ')
p.add_run('itálico.').italic = True
Também é possível formatar a fonte dos textos e seus tamanhos. No exemplo abaixo, um novo parágrafo é criado logo após uma segunda seção. Para o novo parágrafo, a fonte e seu tamanho foram explicitamente definidos:
# Adicionar um título de seção
doc.add_heading('Seção 1: Introdução', level=2)
#Adicionar mais um parágrafo
p2 = doc.add_paragraph()
run = p2.add_run('Esse texto possui um parágrafo demonstrativo sem negrito ou itálico.')
# formata fonte
font = run.font
font.name = 'Arial' # Determina tipo de fonte
font.size = Pt(15) # determina tamanho de fonte
Para ver o resultado do documento criado até o momento, basta usar o método save() e especificar um nome e local para o arquivo criado.
# Salva o documento
doc.save('exemplo_de_documento.docx')
Documento criado:
Adição de tabelas
A inclusão de tabelas pode ser feita com o método table(). Com ele, podemos especificar o estilo e também o número de linhas (rows) e colunas (cols). Um for loop preenche as tabelas com os dados necessários. Veja um exemplo de código com a criação de uma pequena tabela:
# Adiciona uma tabela
doc.add_heading('Seção 2: Tabela', level=2)
table = doc.add_table(rows=4, cols=3)
table.style = 'Table Grid'
table.autofit = False
table.allow_autofit = False
for row in table.rows:
for cell in row.cells:
cell.width = Pt(100)
table.cell(0, 0).text = 'Nome'
table.cell(0, 1).text = 'Cidade'
table.cell(0, 2).text = 'E-mail'
for i, data in enumerate([('Maria', 'Fortaleza', 'maria@gmail.com'), ('Mario', 'Rio de Janeiro', 'mario@gmail.com'), ('Ana', 'Porto Alegre', 'ana@gmail.com')], start=1):
table.cell(i, 0).text = data[0]
table.cell(i, 1).text = data[1]
table.cell(i, 2).text = data[2]
E aqui está a tabela criada:
Inclusão de imagens
Para inserir imagens em documentos do Word com Python, usamos o método add_picture(). Ele recebe como argumento a localização da imagem no seu computador, como ilustrado abaixo:
# Adiciona uma imagem
doc.add_heading('Section 3: Imagem', level=2)
doc.add_paragraph('Minha imagem:')
doc.add_picture('LOCAL_DA_SUA_IMAGEM.png', width=Pt(300))
# Salva o documento completo
doc.save('exemplo_de_documento.docx')
Com a inclusão da imagem, o documento completo ficou assim:
Conclusão
A biblioteca python-docx consiste em uma ferramenta poderosa para trabalhar com documentos do Word usando códigos Python. Com sua ampla gama de recursos e interface amigável, ela é a escolha ideal para automatizar tarefas de documentos. Se você precisa criar novos documentos, modificar os existentes ou extrair informações de documentos do Word, a biblioteca python-docx tem tudo o que você precisa.
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Módulo textwrap para formatação de textos
Manipulação de arquivos com Python
os.environ: gerenciamento de variáveis de ambiente com Python
Métodos Avançados Do Módulo os
Aprenda a criar documentos do Word com Python
Três dicas simples para escrever códigos Python mais robustos
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.