Python: Como Ler, Filtrar e Exportar Planilhas Excel com Pandas e Openpyxl
Python: Como Ler, Filtrar e Exportar Planilhas Excel com Pandas e Openpyxl
Manipular arquivos do Excel é uma tarefa essencial na rotina de análise de dados e geração de relatórios administrativos. Combinando a biblioteca pandas para tratamento de dados com o openpyxl para suporte ao formato
.xlsx, é possível carregar planilhas grandes, aplicar filtros e salvar relatórios finais formatados com poucas linhas de código.Instalação das Bibliotecas
Bash
pip install pandas openpyxl
1. Leitura e Filtragem de Dados do Excel
Carrega uma planilha existente, exibe as primeiras linhas e aplica filtros condicionais nos dados.
Python
import pandas as pd
def processar_relatorio_excel(caminho_arquivo):
try:
# Lê a aba 'Vendas' da planilha Excel
df = pd.read_excel(caminho_arquivo, sheet_name="Vendas")
# Exibe o topo da tabela no terminal
print("📊 Primeiras linhas encontradas:")
print(df.head(3))
# Filtra registros com valor acima de 1000 e status 'Concluído'
df_filtrado = df[(df["Valor"] > 1000) & (df["Status"] == "Concluído")]
return df_filtrado
except Exception as erro:
print(f"❌ Erro ao ler a planilha: {erro}")
return None
# Exemplo de uso:
dados_filtrados = processar_relatorio_excel("vendas_2026.xlsx")
Pontos-chave:
sheet_name="Vendas": Especifica o nome exato da aba a ser lida. Se omitido, o Pandas lerá por padrão a primeira aba do arquivo.df[(condicao1) & (condicao2)]: Aplica múltiplos filtros lógicos diretamente nas colunas usando operadores bitwise (¶ E,|para OU).df.head(3): Retorna apenas os 3 primeiros registros da estrutura para validação rápida no console.
2. Exportação de Múltiplas Abas e Formatação Automática
Grava os dados processados em um novo arquivo
.xlsx criando abas separadas e ajustando a largura das colunas automaticamente via openpyxl.Python
import pandas as pd
def exportar_relatorio_formatado(df_principal, df_resumo, arquivo_saida):
# Utiliza o ExcelWriter integrado ao motor openpyxl
with pd.ExcelWriter(arquivo_saida, engine="openpyxl") as writer:
# Grava os DataFrames em abas distintas
df_principal.to_excel(writer, sheet_name="Dados Completos", index=False)
df_resumo.to_excel(writer, sheet_name="Resumo Executivo", index=False)
# Acessa a pasta de trabalho para ajustar o layout
workbook = writer.book
# Percorre todas as abas para ajustar a largura das colunas automaticamente
for sheet in writer.sheets.values():
for col in sheet.columns:
# Encontra o tamanho do maior texto da coluna
max_len = max(len(str(cell.value or '')) for cell in col)
col_letter = col[0].column_letter
sheet.column_dimensions[col_letter].width = max(max_len + 3, 12)
print(f"✅ Relatório exportado com sucesso: {arquivo_saida}")
# Exemplo de uso:
if dados_filtrados is not None:
# Cria uma tabela agregada para o resumo
resumo = dados_filtrados.groupby("Categoria")["Valor"].sum().reset_index()
exportar_relatorio_formatado(dados_filtrados, resumo, "relatorio_final.xlsx")
Pontos-chave:
engine="openpyxl": Define o motor de escrita responsável por estruturar a sintaxe do formato.xlsx.index=False: Impede a gravação do índice numérico das linhas na planilha exportada.sheet.column_dimensions[col_letter].width: Ajusta a largura visual da coluna dinamicamente de acordo com o comprimento do maior texto, evitando células com exibição truncada (###).

Comentários
Postar um comentário