In questo articolo vedremo come gestire un file Microsoft Excel, tramite il componente CloseXML . I vari esempi di codice nel linguaggio di programmazione C#, sono per un progetto di tipo Windows Application, ma possono essere riutilizzati con poche modifiche anche per l’ambiente web.
Il componente permette una gestione più snella e semplificata nell’utilizzare il foglio di calcolo più famoso al mondo.
Creazione del progetto
Tramite l’ambiente di sviluppo Visual Studio 2022 Community, o altra versione, si crea un nuovo progetto di tipo “app Windows Forms”, utilizzando l’ultima versione del Framework .Net, nel momento in cui stiamo scrivendo l’articolo è la 9.
Dopo aver creato il progetto, aggiungiamo alla form, due controlli di tipo pulsanti, il primo avrà la proprietà “Text” con il valore “Crea Excel”, e la proprietà “Name” con il valore “BtnCreaExcel”, il secondo con la proprietà “Text” impostata su “Leggi Excel”, e con il valore della proprietà “Name” con il valore “BtnLeggiExcel”.
Tramite Nuget aggiungiamo al progetto il riferimento al pacchetto “ClosedXML” , il tutto come mostrato in figura 1.

Figura 1 – L’aggiunta del progetto del pacchetto ClosedXML
Stesura del codice
Dopo aver configurato il progetto, non resta che scrivere il codice per gestire i file Excel. Aggiungiamo alla nostra form, lo spazio dei nomi riguardante l’uso di questo componente, in alto, sopra ad ogni dichiarazione, inseriamo il namespace del pacchetto.
Di seguito si riporta il frammento di codice delle suddette operazioni.
C#
using ClosedXML.Excel;
Passiamo in visualizza grafica, e facciamo doppio click sul primo pulsante, quello con la scritta “Crea Excel”, in questo modo passiamo in visualizzazione codice dell’evento click del pulsante stesso.
In questo evento, si crea il file Excel, impostando nelle prime tre colonne un titolo (Nome, Cognome, Città) formattandolo con allineamento al centro, carattere 14, in grassetto e di colore blu, e successivamente aggiunte due righe di dati.
Utilizzando la classe “XLWorkbook”, ci permetterà di gestire il file stesso, mentre tramite la classe “IXLWorkSheet”, gestiamo la singola pagina. Tramite la proprietà Cell, identifichiamo la singola cella ed impostiamo il testo e stile.
Di seguito si riporta il frammento di codice delle suddette operazioni.
C#
private void BtnCreaExcel_Click(object sender, EventArgs e)
{
try
{
//Crea un oggetto di tipo cartella di lavoro
using (var workbook = new XLWorkbook())
{
//Crea ed Imposta il nome del foglio di lavoro
var worksheet = workbook.Worksheets.Add("Esempio Foglio");
//Aggiungo le intestazioni delle colonne
worksheet.Cell(1, 1).Value = "Nome";
worksheet.Cell(1, 2).Value = "Cognome";
worksheet.Cell(1, 3).Value = "Città";
//Imposto lo Stile
worksheet.Cell(1, 1).Style.Font.Bold = true;
worksheet.Cell(1, 2).Style.Font.Bold = true;
worksheet.Cell(1, 3).Style.Font.Bold = true;
worksheet.Cell(1, 1).Style.Fill.BackgroundColor = XLColor.LightGray;
worksheet.Cell(1, 2).Style.Fill.BackgroundColor = XLColor.LightGray;
worksheet.Cell(1, 3).Style.Fill.BackgroundColor = XLColor.LightGray;
worksheet.Cell(1, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
worksheet.Cell(1, 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
worksheet.Cell(1, 3).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
//worksheet.Cell(1, 1).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;
//worksheet.Cell(1, 2).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;
//worksheet.Cell(1, 3).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;
worksheet.Cell(1,1).Style.Font.FontSize = 14;
worksheet.Cell(1,2).Style.Font.FontSize = 14;
worksheet.Cell(1,3).Style.Font.FontSize = 14;
worksheet.Cell(1, 1).Style.Font.FontColor = XLColor.Blue;
worksheet.Cell(1, 2).Style.Font.FontColor = XLColor.Blue;
worksheet.Cell(1, 3).Style.Font.FontColor = XLColor.Blue;
//Imposto i valori
worksheet.Cell(2, 1).Value = "Emanuele";
worksheet.Cell(2, 2).Value = "Mattei";
worksheet.Cell(2, 3).Value = "Roma";
worksheet.Cell(3, 1).Value = "Luigi";
worksheet.Cell(3, 2).Value = "Cristaldi";
worksheet.Cell(3, 3).Value = "Milano";
//Salvo il file
workbook.SaveAs("C:\\Varie\\nuovoExcel.xlsx");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Passiamo in visualizzazione grafica e facciamo doppio click sul pulsante “Leggi Excel”, in modo da passare in visualizza codice nell’evento click del pulsante.
In questo evento, scriveremo il codice con il quale andremo a leggere tutti i dati presenti nel file fino a quando le celle non sono vuote.
Una ricerca di dati nell’area del foglio compilata.
Tramite la classe XLWorkBook, apriamo il file Microsoft Excel, mentre tramite la classe IXLWorkSheet, leggiamo tutti i valori delle celle. Tramite il metodo WorkSheet(1) dell’oggetto di tipo XLWorkBook, otteniamo un oggetto di tipo IXLWoerkSheet per gestire il primo foglio del file Excel.
Di seguito si riporta il codice dell’evento click del pulsante, che legge tutti i dati presenti nel primo foglio di Microsoft Excel.
C#
private void BtnLeggiExcel_Click(object sender, EventArgs e)
{
using (var workbook = new XLWorkbook("C:\\Varie\\nuovoExcel.xlsx"))
{
//Leggo il primo foglio di lavoro
var worksheet = workbook.Worksheet(1);
//leggo tutte le celle del foglio di lavoro che non sono vuote
var risultato = worksheet.Cells(true);
foreach (var item in risultato)
{
MessageBox.Show(item.Value.ToString());
}
}
}
Conclusioni
L’articolo ha voluto fornire al lettore le basi per realizzare applicazioni .Net con la gestione dei file Microsoft Excel. Tramite la libreria ClosedXML, qui https://docs.closedxml.io/ la documentazione online, è possibile con poche righe di codice, gestire i file Excel, sia in scrittura e sia in lettura.
Una libreria che semplifica di molto la stesura di codice, permettendo al programmatore di realizzare applicazioni in maniera più veloce e semplice.