Excel é a ferramenta mais usada no mundo corporativo para dados — e também uma das que mais consome tempo com tarefas manuais repetitivas. Formatar relatórios, combinar dados de múltiplas planilhas, atualizar gráficos com novos dados, gerar arquivos PDF a partir de templates. Tudo isso pode ser automatizado com Python em scripts que rodam em segundos o que levaria horas manualmente. A biblioteca openpyxl e o pandas tornam manipulação de Excel em Python extremamente acessível.
Instalação das bibliotecas
pip install openpyxl pandas xlrd openpyxl
openpyxl: lê e escreve arquivos .xlsx, acessa células individualmente, formata, cria gráficos. pandas: manipula dados tabulares com alto nível de abstração — ideal para agregar, filtrar, transformar e combinar dados de planilhas. Use openpyxl quando precisar de controle fino de formatação; use pandas quando precisar manipular os dados em si.
Lendo uma planilha com pandas
import pandas as pd
# Ler planilha
df = pd.read_excel('vendas.xlsx', sheet_name='Janeiro')
# Ver as primeiras linhas
print(df.head())
# Informações gerais
print(df.shape) # (linhas, colunas)
print(df.columns) # nomes das colunas
print(df.dtypes) # tipos de dados de cada coluna
# Filtrar: apenas vendas acima de R$ 1000
df_top = df[df['valor'] > 1000]
# Agrupar por vendedor e somar totais
resumo = df.groupby('vendedor')['valor'].agg(['sum', 'count', 'mean'])
resumo.columns = ['total', 'qtd_vendas', 'ticket_medio']
resumo = resumo.sort_values('total', ascending=False)
print(resumo)
Gerando um relatório em Excel formatado
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils import get_column_letter
wb = Workbook()
ws = wb.active
ws.title = "Relatório de Vendas"
# Cabeçalhos com formatação
cabecalhos = ['Vendedor', 'Total Vendas', 'Qtd Pedidos', 'Ticket Médio']
for col, titulo in enumerate(cabecalhos, 1):
cell = ws.cell(row=1, column=col, value=titulo)
cell.font = Font(bold=True, color="FFFFFF")
cell.fill = PatternFill(fill_type="solid", fgColor="1F4E79")
cell.alignment = Alignment(horizontal="center")
# Ajustar largura das colunas automaticamente
for col in range(1, len(cabecalhos) + 1):
ws.column_dimensions[get_column_letter(col)].width = 20
# Dados
dados = [
["Ana Silva", 45200.50, 31, 1458.08],
["Carlos Lima", 38900.00, 27, 1440.74],
["Maria Souza", 52100.75, 44, 1184.11],
]
for row_idx, linha in enumerate(dados, 2):
for col_idx, valor in enumerate(linha, 1):
ws.cell(row=row_idx, column=col_idx, value=valor)
wb.save("relatorio_vendas.xlsx")
print("Relatório gerado com sucesso!")
Combinando múltiplas planilhas
import pandas as pd
import glob
# Lê todos os arquivos .xlsx de uma pasta
arquivos = glob.glob('dados/*.xlsx')
# Combina em um único DataFrame
dfs = []
for arquivo in arquivos:
df = pd.read_excel(arquivo)
df['arquivo_origem'] = arquivo # rastreia de onde veio
dfs.append(df)
dados_completos = pd.concat(dfs, ignore_index=True)
print(f"Total de registros combinados: {len(dados_completos)}")
# Salva o resultado consolidado
dados_completos.to_excel('consolidado.xlsx', index=False)
print("Arquivo consolidado gerado!")
Automatizando com agendamento
Para o script rodar automaticamente em horários programados: no Windows, use o Agendador de Tarefas (Task Scheduler) para executar o script Python diariamente ou semanalmente. No Linux/Mac, use cron (crontab -e). Para automações mais sofisticadas que envolvem envio de email com o relatório como anexo, use smtplib + email da biblioteca padrão do Python. Com 50 a 100 linhas de Python, você pode eliminar completamente tarefas que consomem horas toda semana — e apresentar isso como uma conquista de produtividade para qualquer equipe ou empresa.
Tem um projeto em mente?
Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.