Come salvare fogli di calcolo come CSV in Python

Come salvare fogli di calcolo come CSV in Python

Problema

Salvate una cartella di lavoro Excel (.xlsx) come file CSV usando Aspose.Cells FOSS in Python. Caricate la cartella di lavoro con Workbook(), poi chiamate save_as_csv() per scrivere il foglio attivo in un file di valori separati da virgole. Opzionalmente passate un oggetto CSVSaveOptions per controllare il delimitatore, la codifica e il comportamento delle virgolette.

Prerequisiti

Per salvare fogli di calcolo come CSV usando Aspose.Cells FOSS in Python, assicuratevi che il vostro ambiente soddisfi i seguenti requisiti.

  • Python 3.7 o versione successiva installato
  • Installate Aspose.Cells FOSS tramite pip install aspose-cells-foss>=26.3.1
  • Importate la libreria usando from aspose.cells_foss import Workbook
  • Conoscenza di base della gestione dei file in Python

Passi per il salvataggio

Passo 1: Installare la libreria

Installate Aspose.Cells FOSS da PyPI. Non è richiesto alcun file di licenza per l’uso FOSS.

pip install aspose-cells-foss

Passo 2: Caricare la cartella di lavoro

Istanziate Workbook con il percorso a un file .xlsx esistente. Il costruttore accetta un parametro opzionale password per le cartelle di lavoro protette.

from aspose.cells_foss import Workbook

workbook = Workbook("input.xlsx")

Per lavorare con una cartella di lavoro completamente nuova, omettete il percorso del file:

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

Passo 3: Salvare il foglio attivo come CSV

Chiamate Workbook.save_as_csv() con il percorso di output desiderato. Il metodo scrive il primo foglio (attivo) per impostazione predefinita.

workbook.save_as_csv("output.csv")

In alternativa, usate il metodo generico Workbook.save() — Aspose.Cells FOSS deduce il formato CSV dall’estensione .csv:

workbook.save("output.csv")

Entrambe le chiamate producono un output identico quando non sono necessarie opzioni personalizzate.

Passo 4: Salvare con opzioni CSV

Workbook.save_as_csv() accetta un’istanza opzionale di CSVSaveOptions come secondo argomento. Istanziate CSVSaveOptions da aspose.cells_foss.csv_handler e passatela direttamente per controllare il comportamento dell’esportazione, come la scelta di un delimitatore o una codifica non predefiniti.

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)

Quando non viene passato CSVSaveOptions, save_as_csv() usa le impostazioni predefinite incorporate della libreria (delimitatore virgola, codifica UTF-8). Passate l’oggetto opzioni ogni volta che è necessario sovrascrivere queste impostazioni predefinite a livello di programmazione.

Passo 5: Esportare un foglio di lavoro specifico

Quando una cartella di lavoro contiene più fogli, viene esportato il foglio attivo. Usate Workbook.set_active_worksheet() per scegliere quale foglio esportare prima del salvataggio.

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")

Per esportare ogni foglio nel proprio file CSV, iterate su 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")

Esempio completo

Il seguente esempio autonomo crea una cartella di lavoro, la riempie con dati di esempio e la salva sia come CSV standard che come CSV delimitato da punto e virgola.

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.")

Problemi comuni

File di output vuoto

Se il CSV di output è vuoto o contiene solo righe vuote, verificate che i valori delle celle siano stati assegnati prima di chiamare save_as_csv(). Il metodo esporta il foglio di lavoro attivo — confermate che il foglio corretto sia attivo usando workbook.get_active_worksheet().

Problemi di codifica (caratteri illeggibili)

Quando si apre un CSV in Excel e si vedono caratteri corrotti, verificate la codifica usata durante l’esportazione. Aspose.Cells FOSS usa UTF-8 per impostazione predefinita; Excel su Windows potrebbe aspettarsi un indicatore dell’ordine dei byte (BOM) per riconoscere correttamente la codifica. Configurate la codifica tramite CSVSaveOptions e passatela a save_as_csv().

Le cartelle di lavoro con più fogli esportano solo un foglio

CSV è un formato a tabella singola; è possibile salvare solo un foglio di lavoro per file. Esportate ogni foglio individualmente usando set_active_worksheet(index) come mostrato nel Passo 5.

Celle contenenti il delimitatore

Se il valore di una cella contiene il carattere delimitatore (ad es., una virgola in un output delimitato da virgole), Aspose.Cells FOSS mette automaticamente il valore tra virgolette durante l’esportazione. Usate CSVSaveOptions per personalizzare il comportamento delle virgolette se necessario.

Domande frequenti

D: workbook.save("output.csv") produce lo stesso risultato di save_as_csv()?

Sì. Workbook.save() controlla l’estensione del file e delega a save_as_csv() quando l’estensione è .csv. Chiamate save_as_csv() direttamente e passate un’istanza di CSVSaveOptions quando è necessario personalizzare l’esportazione oltre le impostazioni predefinite incorporate.

D: Posso esportare in una stringa CSV invece di un file?

Sì. Usate CSVHandler.save_csv_to_string(workbook, options) da aspose.cells_foss.csv_handler. Questo restituisce il contenuto CSV come stringa Python, che potete scrivere in uno stream, caricare o elaborare ulteriormente senza toccare il filesystem.

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)

D: Come ricarico un CSV nella cartella di lavoro dopo il salvataggio?

Usate Workbook.load_csv("file.csv") su un’istanza esistente di Workbook, o chiamate la funzione di convenienza load_csv_workbook("file.csv") da aspose.cells_foss.csv_handler per ottenere una cartella di lavoro pronta all’uso in un solo passaggio.

D: Quali versioni di Python sono supportate?

Aspose.Cells FOSS richiede Python 3.7 o versione successiva. Non sono necessarie estensioni native aggiuntive per l’esportazione CSV; la libreria è Python puro.

D: Posso salvare solo una parte di un foglio di lavoro (un intervallo di celle) come CSV?

Aspose.Cells FOSS esporta l’intero intervallo utilizzato del foglio attivo. Per limitare l’output a un intervallo specifico, copiate le celle desiderate in una cartella di lavoro temporanea ed esportate quella cartella di lavoro.

Vedere anche

 Italiano