Microsoft.Net aggiornare le celle di un file Excel con Ado.Net

Articolo che fornisce una tecnica di come utilizzare istruzione SQL per aggiornare i dati di una cella in Microsoft Excel.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come poter modificare i dati presenti in un file Microsoft Excel, tramite applicazione .Net con i linguaggi di programmazione più usati, quali Visual Basic Net e C#.
Il codice utilizzato in questo articolo riguarda l’ambiente “Windows Application” ma lo stesso frammento di codice è identico anche per ambiente Web.
Il file Microsoft Excel, sarà considerato come un database, quindi l’aggiornamento dei dati avverrà tramite istruzione sql di tipo “Update” utilizzando le classi messe a disposizione dallo spazio dei nomi Oledb.
Si crea un nuovo file Microsoft Excel e si valorizzano le prime tre colonne e tre righe, nella prima un contatore di riga, nella seconda colonna i nomi di persone e nella terza i cognomi il tutto come mostrato in figura 1.
 

Figura 1 – Il file Excel

A questo punto salvare il file Microsoft Excel in .xls quindi versione 2003 o 2007.
Terminata la creazione del file Excel, non ci resta che creare il nostro progetto.

Stesura del codice

Si crea un progetto di tipo Windows Application, in base al linguaggio di propria conoscenza.
Nella form, inseriamo un pulsante, il quale all’evento click andrà ad effettuare la modifica della terza colonna (Cognome) relativa alla seconda riga.

Per utilizzare le classi come se il file Excel è considerato un database, occorre aggiungere lo spazio dei nomi Oledb.
Passiamo in visualizzazione codice ed in alto sopra ad ogni dichiarazione, dobbiamo scrivere lo spazio dei nomi.

Qui di seguito si riporta le dichiarazioni per entrambi i linguaggi.

VB.Net
Imports System.Data.OleDb
C#
using System.Data.OleDb;


Terminata questa fase, passiamo in visualizzazione grafica della nostra form e facciamo doppio click sul pulsante, in modo che passiamo in visualizzazione codice per l’evento click del pulsante.
Nell’evento click dovremmo scrivere il codice utilizzando la classe oledbconnection per collegarsi al file Excel, come se fosse una database, un oggetto di tipo “Oledbcommand” per eseguire l’istruzione sql di tipo Update.
Qui di seguito si riporta il frammento di codice per entrambi i linguaggi in cui viene effettuato l’aggiornamento del file Excel.

VB.Net
Private Sub BtnUpdate_Click(sender As Object, e As EventArgs) Handles BtnUpdate.Click
Try
Dim RecordAggiornati As Int32 = 0
Dim StringaConnessione As String = "Provider=Microsoft.JEt.OLEDB.4.0;Data Source='D:\Dati.xls';Extended Properties=" & ChrW(34) & "Excel 8.0;HDR=NO;" & ChrW(34)
Using conn As OleDbConnection = New OleDbConnection(StringaConnessione)
conn.Open()
Using cmd As OleDbCommand = New OleDbCommand("UPDATE [Foglio1$A2:Z2] SET F3='Prova'", conn)
RecordAggiornati = cmd.ExecuteNonQuery()
End Using
conn.Close()
End Using
If RecordAggiornati > 0 Then
MessageBox.Show("Aggiornato il file Excel")
Else
MessageBox.Show("Impossibile aggiornare il file Excel")
End If
Catch ex As Exception
MessageBox.Show("Errore: " & ex.Message)
End Try
End Sub
C#
private void BtnUpdate_Click(object sender, EventArgs e)
{
try
{
Int32 RecordAggiornati = 0;
string StringaConnessione = "Provider=Microsoft.JEt.OLEDB.4.0;Data Source='D:\\Dati.xls';Extended Properties=" + (char)34 + "Excel 8.0;HDR=NO;" + (char)34;
using (OleDbConnection conn = new OleDbConnection(StringaConnessione))
{
conn.Open();
using (OleDbCommand cmd = new OleDbCommand("UPDATE [Foglio1$A2:Z2] SET F3='Prova'", conn))
{
RecordAggiornati =  cmd.ExecuteNonQuery();
}
conn.Close();
}
if (RecordAggiornati > 0)
MessageBox.Show("Aggiornato il file Excel");
else
MessageBox.Show("Impossibile aggiornare il file Excel");
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}

Conclusioni

Ora non ci resta che testare il nostro applicativo per verificare e constatare l’aggiornamento del file, vedremo che l’istruzione SQL scritta effettuerà la modifica dei dati.
Una considerazione nell’istruzione sql, il nome del foglio deve seguire il range di celle (riga) al quale si vuole apportare la modifica, quindi nell’esempio del precedente esempio di codice, verrà modifica il dato nella riga 2, mentre “F” indica la colonna, nel nostro esempio viene modifica il valore nella colonna 3, quindi verrà modifica la cella che si trova nella seconda riga della terza colonna.
Dopo la parola chiave “SET” va sempre inserito la lettera “F”.
L’articolo ha voluto fornire una tecnica per utilizzare il file Microsoft Excel come fonte dati, illustrando la modifica dei dati tramite istruzione SQL come avviene per i normali database.