(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo exportar un DataFrame a Excel con pandas en Python

João Barros 07 de July de 2026 4 min de lectura

Exportar un DataFrame a Excel con pandas es una de las formas más rápidas de compartir resultados de análisis con colegas que viven en Excel. En lugar de enviar datos en bruto, entregas un archivo .xlsx limpio, con las columnas correctas y listo para abrir. Esta guía muestra cómo hacerlo, desde el caso más simple hasta escribir varias hojas en el mismo archivo.

Requisitos previos

  • Python 3.9 o superior instalado.
  • Las bibliotecas pandas y openpyxl (openpyxl es el motor que escribe archivos .xlsx).
  • Un DataFrame con datos. En este ejemplo creamos uno a partir de un diccionario, pero sirve cualquier origen: CSV, base de datos o API.

Paso 1: Instalar pandas y openpyxl

Antes de exportar a Excel, asegúrate de tener ambas bibliotecas instaladas. pandas gestiona los datos y openpyxl escribe el formato .xlsx que abre Excel. Si usas entornos virtuales, activa el tuyo antes de instalar.

pip install pandas openpyxl

Paso 2: Crear o cargar el DataFrame

Para el ejemplo usamos un pequeño DataFrame de ventas. En la práctica, estos datos pueden venir de un archivo CSV, de una consulta SQL o de una API — el paso de exportación es siempre igual, sea cual sea el origen de los datos.

import pandas as pd

dados = {
    "Produto": ["Teclado", "Rato", "Monitor"],
    "Unidades": [12, 30, 8],
    "Preco": [19.90, 9.50, 149.00],
}
df = pd.DataFrame(dados)
print(df)

Paso 3: Exportar el DataFrame a Excel

La exportación básica usa el método to_excel. El parámetro index=False evita escribir la columna de índice de pandas, que casi nunca interesa en el archivo final y suele confundir a quien abre la hoja.

df.to_excel("vendas.xlsx", index=False)

Esto crea un archivo vendas.xlsx en la misma carpeta que el script, con una hoja llamada "Sheet1". Para dar nombre a la hoja, usa el parámetro sheet_name:

df.to_excel("vendas.xlsx", sheet_name="Vendas", index=False)
Si aparece el error "No module named 'openpyxl'", instala el motor con pip install openpyxl. Es lo que pandas usa para escribir archivos .xlsx.

Paso 4: Escribir varios DataFrames en hojas diferentes

Cada llamada a to_excel con un nombre de archivo crea un libro nuevo y sobrescribe el anterior. Por eso, para combinar más de una tabla en el mismo archivo — por ejemplo, un detalle y un resumen — usamos ExcelWriter como gestor de contexto (un bloque with). Cada DataFrame se escribe en su propia hoja.

resumo = df.groupby("Produto")["Unidades"].sum().reset_index()

with pd.ExcelWriter("relatorio.xlsx", engine="openpyxl") as writer:
    df.to_excel(writer, sheet_name="Detalhe", index=False)
    resumo.to_excel(writer, sheet_name="Resumo", index=False)

El bloque with garantiza que el archivo se escribe y se cierra correctamente al final, sin que tengas que llamar a ningún método de guardado manualmente.

Paso 5: Elegir columnas y tratar valores faltantes

El método to_excel acepta parámetros útiles para ajustar el resultado: columns elige y ordena las columnas a exportar, na_rep sustituye los valores faltantes por un texto a tu elección y startrow deja filas libres en la parte superior (por ejemplo, para un título).

df.to_excel(
    "vendas.xlsx",
    sheet_name="Vendas",
    index=False,
    columns=["Produto", "Unidades"],
    na_rep="s/ dados",
)

Verificar el resultado

Abre el archivo generado en Excel y confirma que los datos aparecen en las hojas correctas y sin la columna de índice. Si prefieres validar en código, vuelve a leer el archivo con pandas y compáralo con el original:

verificacao = pd.read_excel("vendas.xlsx", sheet_name="Vendas")
print(verificacao.head())

Si el resultado muestra las mismas filas que exportaste, la exportación salió bien.

Conclusión

Con to_excel y ExcelWriter pasas de datos en Python a informes en Excel en pocas líneas, lo que resulta ideal para compartir resultados con quien no programa. Como próximos pasos, prueba a automatizar un informe semanal o a aplicar formato avanzado — anchos de columna y colores — directamente con openpyxl. ¿Qué tarea repetitiva de tu equipo podrías eliminar escribiendo el resultado directamente en Excel?