Cómo guardar hojas de cálculo como CSV en Python
Problema
Guarde un libro de Excel (.xlsx) como un archivo CSV usando Aspose.Cells FOSS en Python. Cargue el libro con Workbook(), luego llame a save_as_csv() para escribir la hoja activa en un archivo de valores separados por comas. Opcionalmente pase un objeto CSVSaveOptions para controlar el delimitador, la codificación y el comportamiento de comillas.
Requisitos
Para guardar hojas de cálculo como CSV usando Aspose.Cells FOSS en Python, asegúrese de que su entorno cumpla los siguientes requisitos.
- Python 3.7 o posterior instalado
- Instale Aspose.Cells FOSS a través de
pip install aspose-cells-foss>=26.3.1 - Importe la biblioteca usando
from aspose.cells_foss import Workbook - Familiaridad básica con la manipulación de archivos en Python
Pasos de guardado
Paso 1: Instalar la biblioteca
Instale Aspose.Cells FOSS desde PyPI. No se requiere archivo de licencia para el uso de FOSS.
pip install aspose-cells-fossPaso 2: Cargar el libro de trabajo
Instancie Workbook con la ruta a un archivo .xlsx existente. El constructor acepta un parámetro opcional password para libros de trabajo protegidos.
from aspose.cells_foss import Workbook
workbook = Workbook("input.xlsx")Para trabajar con un libro de trabajo nuevo en su lugar, omita la ruta del archivo:
from aspose.cells_foss import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Populate some cells
worksheet.cells["A1"].value = "Product"
worksheet.cells["B1"].value = "Price"
worksheet.cells["A2"].value = "Widget"
worksheet.cells["B2"].value = 9.99
worksheet.cells["A3"].value = "Gadget"
worksheet.cells["B3"].value = 24.95Paso 3: Guardar la hoja activa como CSV
Llame a Workbook.save_as_csv() con la ruta de salida deseada. El método escribe la primera hoja (activa) por defecto.
workbook.save_as_csv("output.csv")Alternativamente, use el método genérico Workbook.save() — Aspose.Cells FOSS infiere el formato CSV de la extensión .csv:
workbook.save("output.csv")Ambas llamadas producen una salida idéntica cuando no se necesitan opciones personalizadas.
Paso 4: Guardar con opciones CSV
Workbook.save_as_csv() acepta una instancia opcional de CSVSaveOptions como su segundo argumento. Instancie CSVSaveOptions a partir de aspose.cells_foss.csv_handler y pásela directamente para controlar el comportamiento de exportación, como elegir un delimitador o codificación no predeterminados.
from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions
workbook = Workbook("input.xlsx")
# Create options instance — configure attributes per your environment's needs
options = CSVSaveOptions()
workbook.save_as_csv("output_custom.csv", options)Cuando no se pasa CSVSaveOptions, save_as_csv() utiliza los valores predeterminados incorporados de la biblioteca (delimitador de coma, codificación UTF-8). Pase el objeto de opciones siempre que necesite sobrescribir esos valores predeterminados de forma programática.
Paso 5: Exportar una hoja de cálculo específica
Cuando un libro de trabajo contiene varias hojas, se exporta la hoja activa. Use Workbook.set_active_worksheet() para elegir qué hoja exportar antes de guardar.
from aspose.cells_foss import Workbook
workbook = Workbook("multi_sheet.xlsx")
# Export the second worksheet (index 1)
workbook.set_active_worksheet(1)
workbook.save_as_csv("sheet2_output.csv")Para exportar cada hoja a su propio archivo CSV, itere sobre workbook.worksheets:
from aspose.cells_foss import Workbook
workbook = Workbook("multi_sheet.xlsx")
for index in range(len(workbook.worksheets)):
ws = workbook.get_worksheet_by_index(index)
workbook.set_active_worksheet(index)
workbook.save_as_csv(f"sheet_{ws.name}.csv")Ejemplo completo
El siguiente ejemplo autocontenido crea un libro de trabajo, lo llena con datos de muestra y lo guarda tanto como un CSV estándar como un CSV delimitado por punto y coma.
from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions
# Create workbook and populate data
workbook = Workbook()
worksheet = workbook.worksheets[0]
headers = ["Name", "Department", "Salary"]
rows = [
["Alice", "Engineering", 95000],
["Bob", "Marketing", 72000],
["Carol", "Finance", 81000],
]
for col, header in enumerate(headers):
col_letter = chr(ord("A") + col)
worksheet.cells[f"{col_letter}1"].value = header
for row_idx, row in enumerate(rows, start=2):
for col_idx, val in enumerate(row):
col_letter = chr(ord("A") + col_idx)
worksheet.cells[f"{col_letter}{row_idx}"].value = val
# Save as standard CSV (default options)
workbook.save_as_csv("employees.csv")
# Save with explicit CSVSaveOptions instance
options = CSVSaveOptions()
workbook.save_as_csv("employees_custom.csv", options)
print("CSV files written successfully.")Problemas comunes
Archivo de salida vacío
Si el CSV de salida está vacío o contiene solo líneas en blanco, verifique que los valores de las celdas se hayan asignado antes de llamar a save_as_csv(). El método exporta la hoja de cálculo activa — confirme que la hoja correcta está activa usando workbook.get_active_worksheet().
Problemas de codificación (caracteres distorsionados)
Al abrir un CSV en Excel y ver caracteres corruptos, verifique la codificación utilizada durante la exportación. Aspose.Cells FOSS usa UTF-8 por defecto; Excel en Windows puede esperar una marca de orden de bytes (BOM) para reconocer la codificación correctamente. Configure la codificación mediante CSVSaveOptions y pásela a save_as_csv().
Libros de trabajo de varias hojas exportan solo una hoja
CSV es un formato de tabla única; solo se puede guardar una hoja de cálculo por archivo. Exporte cada hoja individualmente usando set_active_worksheet(index) como se muestra en el Paso 5.
Células que contienen el delimitador
Si el valor de una celda contiene el carácter delimitador (p. ej., una coma en una salida delimitada por comas), Aspose.Cells FOSS cita automáticamente el valor durante la exportación. Use CSVSaveOptions para personalizar el comportamiento de citación si es necesario.
Preguntas frecuentes
P: ¿Produce workbook.save("output.csv") el mismo resultado que save_as_csv()?
Sí. Workbook.save() inspecciona la extensión del archivo y delega en save_as_csv() cuando la extensión es .csv. Llame a save_as_csv() directamente y pase una instancia de CSVSaveOptions cuando necesite personalizar la exportación más allá de los valores predeterminados incorporados.
Q: ¿Puedo exportar a una cadena CSV en lugar de un archivo?
Sí. Use CSVHandler.save_csv_to_string(workbook, options) de aspose.cells_foss.csv_handler. Esto devuelve el contenido CSV como una cadena de Python, que puede escribir en un flujo, cargar o procesar más adelante sin tocar el sistema de archivos.
from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVHandler, CSVSaveOptions
workbook = Workbook("input.xlsx")
csv_string = CSVHandler().save_csv_to_string(workbook, CSVSaveOptions())
print(csv_string)Q: ¿Cómo cargo un CSV de nuevo en un libro de trabajo después de guardarlo?
Utilice Workbook.load_csv("file.csv") en una instancia existente de Workbook, o llame a la función de conveniencia load_csv_workbook("file.csv") desde aspose.cells_foss.csv_handler para obtener un libro de trabajo listo para usar en un solo paso.
Q: ¿Qué versiones de Python son compatibles?
Aspose.Cells FOSS requiere Python 3.7 o posterior. No se necesitan extensiones nativas adicionales para la exportación CSV; la biblioteca es puro Python.
P: ¿Puedo guardar solo una parte de una hoja de cálculo (un rango de celdas) como CSV?
Aspose.Cells FOSS exporta todo el rango utilizado de la hoja de cálculo activa. Para restringir la salida a un rango específico, copie las celdas deseadas en un libro de trabajo temporal y exporte ese libro de trabajo.
Ver también
- Cómo guardar archivos con Aspose.Cells FOSS — visión general del guardado que cubre XLSX y Markdown
- Cómo convertir CSV a JSON en Python — cargar CSV y exportar al formato JSON
- Cómo exportar Excel a Markdown en Python — exportación de tabla Markdown usando
save_as_markdown() - Aspose.Cells FOSS para Python: Guía del desarrollador — documentación completa de funciones
- Referencia de API —
Workbook,CSVHandler,CSVSaveOptions