
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:
- Preparare il tuo ambiente di sviluppo
- Salvare dati da DataTable o DataGridView in Excel
- Salvare file Excel in diversi formati di foglio di calcolo (CSV, XLS, ecc.)
- Esportare file Excel in formati di documento (PDF, HTML, ecc.)
- Salvare cartelle di lavoro Excel in un MemoryStream per app web
- Aprire e salvare nuovamente file Excel esistenti
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:

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:

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:

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:

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
-
Evita di Sovrascrivere i File
Verifica se il file di destinazione esiste prima di salvare per prevenire la perdita accidentale di dati.
-
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.
-
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();
}