Durante la mia vita da programmatore ho dovuto spesso imbattermi nel problema di far comunicare applicazioni differenti come VB.NET ed Excel. L’uso del createObject a livello server può dare dei problemi di sicurezza, invece l’oggetto ADODB non dà nessun problema di questo tipo.
Un’esempio dell’uso di ADODB è quello di leggere dati da un’applicazione Excel usando VB.NET. Passo dopo passo cerchiamo di capire il funzionamento del codice.
Supponiamo di avere un file Excel di nome c:\Test.xls.
Supponiamo inoltre di aver aperto Visual Studio e aver creato un nuovo progetto.
Prima di poter usare ADODB bisogna creare il riferimento alla classe. Di seguito spieghiamo come fare.
Da Visual studio.NET clicchiamo, Project -> Add Reference… clicchiamo sul tab COM e selezioniamo Microsoft ActiveX Data Objects 2.7 Library.
Per verificare la corretta importazione della libreria, possiamo cambiare tab e andare su .NET e verifacre che ci sia ADODB.
A questo punto bisogna aggiungere la libreria tramite il comando Imports.
Importazione delle librerie.
Imports System.Data
Imports System.Data.OleDb
Imports ADODB
La prima cosa che dobbiamo fare è dichiarare le variabili che vogliamo usare nel programma. E’ buona norma dichiarare le variabili all’inizio del programma. Nel nostro caso useremo le seguenti variabili:
- valore manterrà I valori letti dal file Excel.
- strSql mantiene la stringa SQL usata per recuperare I valori dal file Excel.
- cn è l’oggetto connessione.
- adoRs è l’oggetto recordset.
- Dichiarazione delle variabili
Dim cn As ADODB.Connection
Dim adoRs As ADODB.Recordset
Dim valore As String
Dim strSQL As String
- Creiamo I nuovi oggetti connessione e recordset
cn = New ADODB.Connection
adoRs = New ADODB.Recordset
Creiamo adesso la stringa di connessione. Per prima cosa bisogna specificare il Provider, nel nostro caso “Microsoft.Jet.OLEDB.4.0″. Poi il file da cui prendere le informazioni c:\Test.xls e la versione di Excel. Infine il tipo di cursore. La proprietà CursorLocation serve per stabilire la localizzazione di default dei cursori (ovvero i Recordset navigabili). Usare adUseClient significa che sarà il Client ad occuparsi di tutte le elaborazioni.
- Creazione della stringa di connessione
With cn
.Provider = “Microsoft.Jet.OLEDB.4.0″
.ConnectionString = “Data Source=c:\Test.xls;Extended Properties=Excel 8.0″
.CursorLocation = CursorLocationEnum.adUseClient
.Open()
End With
La stringa SQL è leggermente differente da quelle usate di solito. La clausola FROM ha bisogno di aggiungere le parentesi quadre e il nome dello sheet seguito da $.
- Definizione della stringa SQL per il recupero dei dati
strSQL = “SELECT * FROM [Sheet1$]”
Creata la stringa SQL bisogna creare il recordset e cominciare a ciclare sui valori.
La variabile valore manterra i dati letti dal file Excel.
- Ciclo sui valori trovati
With adoRs
.ActiveConnection = cn
.Open(strSQL)
.MoveFirst()
While Not .EOF
valore = adoRs(0).Value
.MoveNext()
End While
End With
A questo punto bisogna chiudere la connessione e chiudere il recordset.
- Chiudo la connessione
cn.Close()
adoRs.Close()


