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çãowith 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 bibliotecaopenpyxlinstalada no ambiente (pip install openpyxl) para que opandasconsiga 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
Postar um comentário