Automação

Como automatizar planilhas Excel com Python: do básico ao avançado

Como automatizar planilhas Excel com Python: do básico ao avançado

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.

Resposta rápida Orçamento sem compromisso +100 projetos entregues
Compartilhar: