Como exportar múltiplos DataFrames para abas diferentes do mesmo Excel em Python

Como exportar múltiplos DataFrames para abas diferentes do mesmo Excel em Python

A criação de relatórios consolidados exige a organização de diferentes conjuntos de dados em uma única pasta de trabalho. Utilizando a classe pd.ExcelWriter() da biblioteca pandas, você consegue gravar múltiplos DataFrames em abas (worksheets) distintas de um mesmo arquivo .xlsx de forma limpa e estruturada.

Python
import pandas as pd

def exportar_dataframes_para_excel(caminho_arquivo: str, dados_abas: dict):
    # Gerencia a criação do arquivo Excel
    with pd.ExcelWriter(caminho_arquivo, engine='openpyxl') as writer:
        for nome_aba, df in dados_abas.items():
            # Grava cada DataFrame na sua respectiva aba sem salvar o índice numérico
            df.to_excel(writer, sheet_name=nome_aba, index=False)
            
    print(f"Relatório exportado com sucesso para: {caminho_arquivo}")

# Exemplo prático de uso
if __name__ == "__main__":
    # Criando DataFrames de exemplo
    df_vendas = pd.DataFrame({'Produto': ['Notebook', 'Mouse'], 'Qtd': [5, 12]})
    df_estoque = pd.DataFrame({'Produto': ['Notebook', 'Mouse', 'Teclado'], 'Saldo': [10, 45, 30]})

    # Mapeando os nomes das abas para os DataFrames
    relatorio = {
        'Vendas': df_vendas,
        'Estoque': df_estoque
    }

    exportar_dataframes_para_excel("relatorio_geral.xlsx", relatorio)

Pontos-chave

  • Context Manager (with): O uso da instrução with pd.ExcelWriter(...) garante que o arquivo seja finalizado e salvo automaticamente no disco ao término do bloco, evitando a corrupção do documento.

  • Engine openpyxl: É necessário ter a biblioteca openpyxl instalada no ambiente (pip install openpyxl) para que o pandas consiga manipular arquivos no formato moderno do Excel (.xlsx).

  • Parâmetro index=False: Desativa a exportação dos índices numéricos do DataFrame (0, 1, 2...), garantindo que apenas os dados e cabeçalhos reais sejam gravados na planilha.

  • Nomes válidos para abas (sheet_name): O Excel limita o nome das abas a 31 caracteres e proíbe o uso de caracteres especiais como :, \, /, ?, *, [ e ].

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