Con pandas, una tabla de datos se convierte en un archivo de Excel en una línea. Lo que ha cambiado desde que se escribió esta página es casi todo lo de alrededor, y el ejemplo antiguo ya no funciona.
También te puede interesar
Instalarlo
pip install pandas openpyxl
Dentro de un entorno virtual. pandas no escribe archivos de Excel por su cuenta: usa openpyxl para los .xlsx, y si falta, da un error al guardar. La versión anterior de esta página recomendaba sudo apt install python3-pandas, que instala la versión de tu distribución, normalmente antigua, y sin openpyxl.
Una hoja
import pandas as pd
df = pd.DataFrame({"Id": [1, 3, 2, 4],
"Nombre": ["Juan", "Eva", "María", "Pablo"],
"Apellido": ["Méndez", "López", "Tito", "Hernández"]})
df.to_excel("ejemplo.xlsx", sheet_name="Hoja de datos", index=False)index=False evita una primera columna con los números de fila 0, 1, 2, 3, que pandas añade si no se lo impides. Casi nunca la quieres.
Varias hojas
ventas = pd.DataFrame({"producto": ["camiseta", "bufanda"], "unidades": [12, 3]})
with pd.ExcelWriter("varias.xlsx") as w:
df.to_excel(w, sheet_name="Personas", index=False)
ventas.to_excel(w, sheet_name="Ventas", index=False)salidahojas: ['Personas', 'Ventas']
El with guarda y cierra el archivo al salir del bloque.
Por qué el ejemplo anterior ya no funciona
writer = ExcelWriter("viejo.xlsx")
df.to_excel(writer, "Hoja de datos", index=False)
writer.save()salidaTypeError: NDFrame.to_excel() takes 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) were given
sheet_name="…". Y aunque pasaras de esa línea, writer.save() ya no existe: se sustituyó por writer.close() o, mejor, por el with de arriba. Es un buen recordatorio de por qué conviene fijar las versiones en un requirements.txt: un ejemplo que funcionaba en 2017 falla igual en tu proyecto el día que actualizas.openpyxl para retocarlo, o hacerlo todo directamente con openpyxl.Más información en inglés: Create an Excel file in Python.
Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.
Muchas gracias por compartir, es lo que andaba buscando, un saludo desde Lima-Perú.
¿qué librería usan?
Muchas gracias por la información, me sirvió mucho.