martedì 29 ottobre 2019

Net aggiornare le celle di un file Excel con Ado.Net VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_net-aggiornare-le-celle-di-un-file-excel_1642.aspx

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.

Nessun commento: