Como automatizar relatórios com Python? Este código lê suas planilhas, cria relatórios e envia eles por email
Neste artigo você vai aprender a automatizar relatórios com Python e o envio deles por e-mail com um código de 12 linhas.
Vamos ver como é possível criar relatórios a partir de dados em Excel e enviá-los automaticamente por e-mail usando o Outlook. Paraisso, vamos usar as bibliotecas Pandas e win32com.
Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Por que automatizar relatórios com Python?
Automatizar a criação e o envio de relatórios elimina a necessidade de criar e enviar arquivos manualmente. Por isso, a automação de relatórios economiza tempo.
Outros pontos importantes são:
- Eficiência: Gera relatórios personalizados para cada cliente ou área com um clique.
- Escalabilidade: Funciona para bases pequenas mas também com milhares de linhas.
- Personalização: Permite criar indicadores, como valores totais, e anexos específicos.
- Integração: Usa o Outlook para envio sem configurações complexas de autenticação.
Essa abordagem é ideal para gerentes, analistas ou qualquer profissional que precise enviar relatórios periódicos.
Como configurar o ambiente?
Pra começar, você precisará das bibliotecas Pandas e openpyxl para manipular arquivos Excel, e pywin32 para integrar com o Outlook. Siga os passos:
- Instale as bibliotecas:
pip install pandas openpyxl- A biblioteca
win32com(parte do pywin32) geralmente já está incluída no Python para Windows, mas se necessário instale com:pip install pywin32
- A biblioteca
- Verifique o Outlook: Certifique-se de que o Outlook está instalado e configurado com uma conta de e-mail (pode ser um Gmail configurado no Outlook).
Como criar o código de automação?
O script abaixo realiza a automação completa: lê uma base de dados em Excel, filtra por cliente, gera relatórios personalizados e envia e-mails com anexos.
A base de dados deve ter colunas como "Cliente" e "Valor Total".
import pandas as pd
import win32com.client as client
import os
# Ler a base de dados
tabela = pd.read_excel("base_dados.xlsx")
# Criar lista de clientes únicos
clientes = tabela["Cliente"].unique()
# Conectar ao Outlook
outlook = client.Dispatch("Outlook.Application")
# Para cada cliente, gerar relatório e enviar e-mail
for cliente in clientes:
# Filtrar dados do cliente
tabela_cliente = tabela[tabela["Cliente"] == cliente]
# Calcular valor total
valor_total = tabela_cliente["Valor Total"].sum()
# Gerar relatório em Excel
nome_arquivo = f"relatorio_{cliente.replace(' ', '')}.xlsx"
tabela_cliente.to_excel(nome_arquivo, index=False)
# Criar e-mail
email = outlook.CreateItem(0) # 0 indica um e-mail
email.To = f"pythonimpressionador+{cliente.lower().replace(' ', '')}@gmail.com"
email.Subject = f"Relatório da empresa {cliente}"
email.Body = f"""
Olá {cliente},
Segue em anexo o relatório completo.
Valor total: R$ {valor_total}
Atenciosamente,
Python L.
"""
# Adicionar anexo com caminho completo
caminho_arquivo = os.path.join(os.getcwd(), nome_arquivo)
email.Attachments.Add(caminho_arquivo)
# Enviar e-mail
email.Send()Explicação do código:
- Leitura da base:
pd.read_excelcarrega o arquivo Excel (ex.:base_dados.xlsx). - Clientes únicos:
tabela["Cliente"].unique()cria uma lista com valores únicos da coluna "Cliente" (ex.: Empresa A, Empresa B, Empresa C). - Filtro por cliente: Para cada cliente, filtra a tabela com
tabela[tabela["Cliente"] == cliente]. - Cálculo de indicadores: Soma a coluna "Valor Total" com
.sum(). - Geração de relatórios:
to_excelcria um arquivo Excel para cada cliente, sem o índice (index=False). - Envio de e-mail: Usa
win32compara criar um e-mail no Outlook, definir destinatário, assunto, corpo e anexo, e enviar com.Send(). - Caminho do anexo:
os.path.joinconcatena o caminho do diretório atual (os.getcwd()) com o nome do arquivo para garantir compatibilidade com o Outlook.
Se você quer aprender a usar pandas em Python do zero, passo a passo, confira nosso artigo introdutório.
Como personalizar o relatório?
Como adicionar mais indicadores ou gráficos?
Além do valor total, você pode personalizar o relatório:
- Indicadores: Calcule médias, máximos, mínimos, etc., usando métodos como
tabela_cliente["Valor Total"].mean(). - Gráficos: Use bibliotecas como Matplotlib ou Seaborn para criar gráficos e salvá-los como imagens para incluir no e-mail.
- Corpo do e-mail: Adicione mais variáveis no corpo, como um resumo de vendas ou destaques.
Exemplo de cálculo adicional:
valor_medio = tabela_cliente["Valor Total"].mean()
email.Body = f"""
Olá {cliente},
Segue em anexo o relatório completo.
Valor total: R$ {valor_total}
Valor médio: R$ {valor_medio:.2f}
Atenciosamente,
Python L.
"""O que fazer se o e-mail não chegar?
Por que o e-mail pode demorar ou não aparecer?
Se o e-mail não chegar imediatamente:
- Caixa de saída: Verifique a pasta "Caixa de Saída" no Outlook, pois o envio pode estar em processamento.
- Configuração do Outlook: Certifique-se de que a conta de e-mail está ativa e configurada corretamente.
- Erro no código: Confirme que o arquivo Excel foi gerado e que o caminho do anexo está correto.
Conclusão
Vimos aqui que com menos de 20 linhas de código podemos automatizar a criação de relatórios a partir de planilhas do Excel, além do envio desses relatórios por e-mail. Tudo isso usando Python e apenas duas bibliotecas, pandas e win32com.
Essa solução é prática e funcional para empresas que precisam enviar relatórios para diferentes clientes, filiais ou áreas, economizando tempo e mantendo a precisão.
Se quiser desenvolver mais esse código, experimente adicionar gráficos ou mais indicadores personalizados, por exemplo.
E se você gostou desse guia, vai gostar também dos nossos outros conteúdos sobre a biblioteca pandas. Também temos muitos guias e tutoriais sobre Python em geral!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








