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 (& para 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

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server