Cómo guardar hojas de cálculo como CSV en Python

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-foss

Paso 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.95

Paso 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

 Español