Un file Excel contiene al suo interno n fogli ed ogni singolo foglio può essere visto come una tabella a se stante. Con ADO.NET e OLEDB (ma lo stesso risultato si poteva ottenere anche con ADO classico) è possibile collegarsi ad un file, leggerne il contenuto e memorizzarlo in un DataSet esattamente allo stesso modo con cui si interroga un db SQL o di qualsiasi altro tipo.
Lo script qui sotto apre un qualsiasi file Excel, legge tutto il contenuto del Foglio1 e lo visualizza in una gridview [myGridView].
Private Sub ReadExcelFile(ByVal FilePath As String)
Dim oledbConn As OleDb.OleDbConnection
Dim oleCmd As OleDb.OleDbCommand
Dim oleDR As OleDb.OleDbDataAdapter
Dim myData As Data.DataSet
myData = New Data.DataSet
oledbConn = New OleDb.OleDbConnection
oledbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
FilePath & ";Extended Properties = ""Excel 8.0;HDR=YES;"""
oledbConn.Open()
oleCmd = New OleDb.OleDbCommand
oleCmd.Connection = oledbConn
oleCmd.CommandText = "SELECT * FROM [Foglio1$]"
oleDR = New OleDb.OleDbDataAdapter(oleCmd)
oleDR.Fill(myData, "Tab")
myGridView.DataSource = myData.Tables("Tab")
myData.Dispose()
myData = Nothing
oleDR.Dispose()
oleDR = Nothing
oleCmd.Dispose()
oleCmd = Nothing
oledbConn.Dispose()
oledbConn = Nothing
End Sub
Il Foglio1 deve esistere nel file e deve chiamarsi esattamente così altrimenti la procedura va in errore.
Il fatto che nella connectionstring sia specificata la proprietà HDR=YES indica ad ADO di utilizzare la prima riga del foglio per le intestazioni di colonna. Di conseguenza le colonne della GridView prenderanno come etichetta i valori di colonna della prima riga, mentre i dati visualizzati cominceranno dalla seconda riga del foglio. La cosa interessante è che questa proprietà (influenzando direttamente il dataset) consente di accedere programmaticamente alle colonne del foglio, specificandone il nome. (Per esempio: myData.Tables("Tab").Rows(0).Item("Codice")).
Il fatto di poter leggere i file Excel con ADO permette di stabilire un criterio unico di accesso ai dati rendendo la vita del programmatore decisamente più semplice.
Nel prossimo post vedremo come scrivere dati su Excel sempre attraverso ADO
Nessun commento:
Posta un commento