Leggere un foglio Excel da V.B .NET

mercoledì 19 ottobre 2005 - 12.41

byvincent Profilo | Newbie

Salve a tutti, ho l'esigenza di fare delle query in un foglio Excel del tipo:
LISTINO PREZZI AGGIORNATO AL 26/09/05

codice descrizione prodotto prezzo c.iva
1040 ADELSCOTT 0.33X24 30,00 20

per ottenere le 4 informazioni sugli articoli.
Il codice che allego funziona bene, il file lo scelgo in un OpenFileDialog ma ottengo un errore:
Cast from type 'DBNULL' to 'String' is not valid.
Le celle nel foglio sono formattate come Generale e Numeri.
Mi chiedo inoltre come si fa a prendere solo le celle di interesse, ovvero quelle non vuote sottostanti le intestazioni delle colonne, nella query ho specificato solo il foglio, che apparentemente viene visto come un'unica grande tabella di 65536 righe e e IV colonne!!!
Sò che è possibile specificare una zona ma il foglio Excel viene fornito al cliente che vuole il sw da una ditta già preformattato e il cliente non sa nulla di Excel.
Grazie

Brainkiller Profilo | Guru

Ciao,
io non utilizzerei un approccio di questo tipo, lo trovo più scomodo che accedere direttamente al foglio di Excel avendo pieno controllo di celle e colonne tramite l'Object Model di Excel stesso.

Ne ho parlato diffusamente in un articolo:
http://www.dotnethell.it/articles/ExportExcelDataset.aspx
che riguarda l'esportazione di dati. Ma con le stesse tecniche puoi aprire il tuo File di Excel ed eseguire le elborazioni di cui necessiti senza verificare errori tipo quelli che hai segnalato.

In questo modo puoi facilmente prendere le colonne e le celle che desideri. Cosa un po' più difficile con una query SQL su un foglio non correttamente strutturato.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

spyto Profilo | Newbie

Per leggere un file Excel io uso questo codice, metto tutto su DS e poi vado a selezionare le parti che mi interessano.

Dim Percorso As String = "D:\DDownload\ExcelProva.xls"
Dim DS As New DataSet
Try
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Percorso & ";" & _
"Extended Properties=Excel 8.0")
con.Open()
Dim cmd As New OleDb.OleDbDataAdapter("SELECT * FROM [foglio1$]", con)
DS = New DataSet
cmd.Fill(DS, "tabella")
Griglia.DataSource = DS
Griglia.DataMember = "Tabella"
con.Close()

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5