C# Salva file Excel — Salva Excel in XLSX, PDF e altro

2025-11-14 09:35:06 zaki zou

Tutorial su come salvare file Excel utilizzando codice C#

Salvare file Excel in C# è un'attività comune in molte applicazioni .NET, specialmente quando si generano report, si esportano dati analitici o si automatizzano i log di sistema. Che si lavori con riepiloghi finanziari o dati operativi giornalieri, essere in grado di creare e salvare file Excel programmaticamente può migliorare significativamente l'efficienza e l'accuratezza.

In C#, gli sviluppatori possono gestire i file Excel in diversi modi: creando nuove cartelle di lavoro, scrivendo dati e salvandoli in vari formati come XLSX, CSV o PDF. Con l'aiuto di librerie Excel dedicate, queste operazioni possono essere automatizzate in modo efficiente senza dipendere da Microsoft Excel o da interventi manuali.

In questo articolo, esploreremo come:


Prepara l'Ambiente di Sviluppo

Prima di immergersi nel codice, imposta il tuo ambiente di sviluppo con una libreria Excel che supporti la creazione, la lettura e il salvataggio di file in .NET. In questo tutorial, useremo Free Spire.XLS for .NET.

Passaggio 1: Installa Spire.XLS tramite NuGet

Install-Package FreeSpire.XLS

Passaggio 2: Importa lo Spazio dei Nomi Richiesto

using Spire.Xls;

Passaggio 3: Crea, Scrivi e Salva un Semplice File Excel

// Crea una nuova cartella di lavoro e ottieni il primo foglio di lavoro
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

// Scrivi "Ciao Mondo!" nella cella A1
sheet.Range["A1"].Text = "Ciao Mondo!";

// Salva la cartella di lavoro in un file
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016);

Questo semplice esempio mostra il flusso di lavoro di base: creare una cartella di lavoro, scrivere dati in una cella e salvare il file.

Successivamente, puoi esplorare classi e metodi chiave come:

  • Workbook – rappresenta l'intero file Excel.
  • Worksheet – rappresenta un singolo foglio all'interno della cartella di lavoro.
  • Range – consente l'accesso a celle specifiche per l'input, la formattazione o lo stile.
  • Workbook.SaveToFile() – salva la cartella di lavoro su disco nel formato Excel specificato.

Salva Dati in un File Excel in C#

Salvare dati strutturati come DataTable o DataGridView in un file Excel è una delle attività più pratiche nello sviluppo C#. Che la tua applicazione produca risultati di database, contenuti di griglie UI o report automatizzati, esportare questi set di dati in Excel offre una migliore leggibilità e compatibilità.

Esempio 1: Salva DataTable in Excel

using Spire.Xls;
using System.Data;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "DatiDipendenti";

DataTable table = new DataTable();
table.Columns.Add("IDDipendente");
table.Columns.Add("NomeCompleto");
table.Columns.Add("Dipartimento");
table.Columns.Add("DataAssunzione");
table.Columns.Add("Stipendio");

// Aggiungi righe di esempio
table.Rows.Add("E001", "Alice Johnson", "Finanza", "2020-03-12", "7500");
table.Rows.Add("E002", "Bob Williams", "Risorse Umane", "2019-08-05", "6800");
table.Rows.Add("E003", "Catherine Lee", "IT", "2021-01-20", "8200");
table.Rows.Add("E004", "David Smith", "Marketing", "2018-11-30", "7100");
table.Rows.Add("E005", "Emily Davis", "Vendite", "2022-06-15", "6900");

// Inserisci il DataTable nel foglio di lavoro
sheet.InsertDataTable(table, true, 1, 1);

// Applica formati predefiniti
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading1;
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
    sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent1;
}
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();

// Salva in Excel
workbook.SaveToFile("EsportazioneDatiDipendenti.xlsx", FileFormat.Version2016);

Come funziona:

  • InsertDataTable() inserisce i dati a partire da una cella specifica.
  • L'argomento true include le intestazioni di colonna.
  • SaveToFile() salva la cartella di lavoro su disco; il secondo parametro specifica la versione del formato Excel.
  • FileFormat.Version2016 specifica la versione del formato Excel.

Di seguito è riportato un output di esempio che mostra come appare il DataTable esportato in Excel:

Risultato del salvataggio di DataTable in Excel utilizzando C#


Esempio 2: Salva DataGridView in Excel

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

sheet.InsertDataTable(((DataTable)dataGridView1.DataSource), true, 1, 1);
workbook.SaveToFile("EsportazioneGridView.xlsx", FileFormat.Version2016);

Suggerimento: prima di salvare, assicurati che l'origine dati del tuo DataGridView sia correttamente convertita in un DataTable. Ciò garantisce che la struttura esportata corrisponda al layout della griglia dell'interfaccia utente.

Se vuoi imparare come creare file Excel con più tipi di dati, formattazione e altri elementi, puoi esplorare l'articolo Come Creare File Excel in C#.


Salva File Excel come CSV o XLS in C#

Sistemi e piattaforme diversi richiedono formati di fogli di calcolo diversi. Sebbene XLSX sia ora lo standard, CSV, XLS e altri formati rimangono comuni negli ambienti aziendali. L'esportazione in formati diversi consente di condividere, elaborare o importare i dati di Excel da varie applicazioni.

Esempio 1: Salva Excel come CSV

CSV (Comma-Separated Values) è un semplice formato basato su testo, ideale per lo scambio di dati con database, applicazioni web o altri sistemi che supportano file di testo semplice.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EsportazioneDatiDipendenti.xlsx");
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);

Esempio 2: Salva Excel come XLS (Formato Legacy)

XLS (formato Excel 97–2003) è un formato binario legacy ancora utilizzato in sistemi o applicazioni meno recenti che non supportano XLSX. Il salvataggio in XLS garantisce la compatibilità con i flussi di lavoro aziendali legacy.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EsportazioneDatiDipendenti.xlsx");
workbook.SaveToFile("Report_legacy.xls", ExcelVersion.Version97to2003);

Formati di Foglio di Calcolo Aggiuntivi Supportati

Oltre ai formati CSV, XLS e XLSX di uso comune, la libreria supporta anche molti altri formati di fogli di calcolo e modelli. La tabella seguente elenca questi formati insieme ai loro corrispondenti valori di enumerazione FileFormat per un facile riferimento durante il salvataggio programmatico dei file.

Formato Descrizione Enum Corrispondente (FileFormat)
ODS Foglio di Calcolo OpenDocument FileFormat.ODS
XLSM Cartella di lavoro Excel con attivazione macro FileFormat.Xlsm
XLSB Cartella di lavoro Excel binaria FileFormat.Xlsb2007 / FileFormat.Xlsb2010
XLT Modello Excel 97–2003 FileFormat.XLT
XLTX Modello Excel Open XML FileFormat.XLTX
XLTM Modello Excel con attivazione macro FileFormat.XLTM

Questi formati aggiuntivi sono utili per le organizzazioni che lavorano con sistemi legacy, standard di documenti aperti o flussi di lavoro di automazione basati su macro/modelli.


Salva Excel come PDF o HTML in C#

In molti casi, i file Excel devono essere convertiti in formati di documento o web per facilitare la pubblicazione, la stampa o la condivisione.
L'esportazione in PDF è ideale per report con layout fisso e per la stampa, while HTML è adatto per visualizzare i dati di Excel in un browser web.

Esempio 1: Salva Excel come PDF

L'esempio seguente mostra come salvare una cartella di lavoro di Excel come file PDF utilizzando C#. Ciò è utile per generare report che preservano il layout e la formattazione.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EsportazioneDatiDipendenti.xlsx");
workbook.SaveToFile("EsportazioneDatiDipendenti.pdf", FileFormat.PDF);

Ecco un esempio del file PDF generato dopo l'esportazione da Excel:

Risultato del salvataggio di Excel in PDF utilizzando C#


Esempio 2: Salva Excel come HTML

Questo esempio dimostra come salvare una cartella di lavoro di Excel come file HTML, rendendo facile il rendering dei dati in un browser web o l'integrazione con applicazioni web.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EsportazioneDatiDipendenti.xlsx");
workbook.SaveToFile("EsportazioneDatiDipendenti.html", FileFormat.HTML);

Di seguito un'anteprima del file HTML esportato e visualizzato in un browser:

Risultato del salvataggio di Excel in HTML utilizzando C#


Formati di Documenti e Web Aggiuntivi Supportati

Oltre a PDF e HTML, la libreria supporta diversi altri formati adatti a documenti e al web. La tabella seguente mostra questi formati insieme ai loro valori di enumerazione FileFormat per un facile riferimento.

Formato Descrizione Enum Corrispondente (FileFormat)
XML Dati Excel esportati come XML FileFormat.XML
Bitmap / Immagine Esporta Excel come Bitmap o altri formati di immagine FileFormat.Bitmap
XPS Documento XML Paper Specification FileFormat.XPS
PostScript Documento PostScript FileFormat.PostScript
OFD Formato Open Fixed-layout Document FileFormat.OFD
PCL File Printer Command Language FileFormat.PCL
Markdown Formato file Markdown FileFormat.Markdown

Questi formati offrono ulteriore flessibilità per la distribuzione di contenuti Excel su diverse piattaforme e flussi di lavoro, sia per la stampa, la pubblicazione web o l'automazione.


Salva un File Excel in MemoryStream in C#

Nelle applicazioni web o nei servizi cloud, salvare i file Excel direttamente su disco potrebbe non essere ideale per motivi di sicurezza o prestazioni. L'uso di MemoryStream consente di generare file Excel in memoria e di inviarli direttamente ai client per il download. Spire.XLS for .NET supporta anche sia il caricamento che il salvataggio di cartelle di lavoro tramite MemoryStream, rendendo facile la gestione dei file Excel interamente in memoria.

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Esporta su Stream";

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();

    // Esempio: invia i byte al client per il download in ASP.NET
    // Response.BinaryWrite(bytes);
}

Questo approccio è particolarmente utile per ASP.NET, Web API o servizi cloud, dove si desidera servire file Excel in modo dinamico senza creare file temporanei sul server.


Apri e Salva di Nuovo File Excel in C#

In molte applicazioni, potrebbe essere necessario caricare una cartella di lavoro Excel esistente, applicare aggiornamenti o modifiche e quindi salvarla nuovamente su disco o convertirla in un formato diverso. Questo è comune quando si aggiornano report, si modificano dati esportati o si automatizzano i flussi di lavoro dei file Excel.

Esempio: Apri e Aggiorna un File Excel

Il seguente codice C# carica la cartella di lavoro precedente, aggiorna la prima cella e salva le modifiche:

Workbook workbook = new Workbook();
workbook.LoadFromFile("EsportazioneDatiDipendenti.xlsx");

Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Contenuto Aggiornato"; // Aggiorna il valore della cella
sheet.Range["A1"].AutoFitColumns(); // Adatta automaticamente la larghezza della colonna

// Salva la cartella di lavoro aggiornata
workbook.Save(); // Salva nel file originale
workbook.SaveToFile("CopiaAggiornata.xlsx", ExcelVersion.Version2016); // Salva come nuovo file

Lo screenshot seguente mostra il foglio Excel aggiornato dopo aver modificato e salvato il file:

Risultato dell'aggiornamento di un file Excel utilizzando C#

Puoi anche consultare la guida dettagliata sulla modifica di file Excel utilizzando C# per scenari più avanzati.


Migliori Pratiche per il Salvataggio di File Excel

  1. Evita di Sovrascrivere i File

    Verifica se il file di destinazione esiste prima di salvare per prevenire la perdita accidentale di dati.

  2. Gestisci Correttamente Permessi e Percorsi

    Assicurati che la tua applicazione abbia i permessi di scrittura nella cartella di destinazione, specialmente in ambienti web o cloud.

  3. Scegli il Formato Giusto

    Usa XLSX per la compatibilità moderna, CSV per lo scambio di dati e PDF per la stampa o la condivisione di report.


Conclusione

Salvare file Excel in C# copre una vasta gamma di operazioni, dalla scrittura di set di dati strutturati, all'esportazione in diversi formati di fogli di calcolo, alla conversione in PDF/HTML, fino alla gestione dei flussi di file nelle applicazioni web.

Con la flessibilità offerta da librerie come Spire.XLS for .NET, gli sviluppatori possono implementare potenti flussi di lavoro di automazione Excel con facilità.


FAQ

D1: Come si salva un file Excel in C#?

Usa SaveToFile() con l'appropriato ExcelVersion o FileFormat:

workbook.SaveToFile("Report.xlsx", ExcelVersion.Version2016);

D2: Come si apre e si modifica un file Excel esistente?

Carica la cartella di lavoro usando LoadFromFile(), apporta le modifiche, quindi salva:

Workbook workbook = new Workbook();
workbook.LoadFromFile("FileEsistente.xlsx");
workbook.Worksheets[0].Range["A1"].Text = "Contenuto Aggiornato";
workbook.SaveToFile("FileAggiornato.xlsx", ExcelVersion.Version2016);

D3: Come si salva in formato CSV o PDF?

Specifica il FileFormat desiderato in SaveToFile():

workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
workbook.SaveToFile("Report.pdf", FileFormat.PDF);

D4: Posso salvare Excel in memoria invece che su disco?

Sì. Usa SaveToStream() per scrivere su un MemoryStream, utile in applicazioni web o cloud:

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();
}

Vedi Anche