PDA

View Full Version : [VB.NET] Velocizzare lettura da file Excel


jackk87
09-11-2009, 11:26
Buongiorno,
ho bisogno di leggere un file excel delle celle e inserirle in un DB access ho utilizzato questo codice

Private Sub leggifile()
Dim excelApp As Microsoft.Office.Interop.Excel.Application
Dim FileExcel As Microsoft.Office.Interop.Excel.Workbook
Dim FoglioExcel As Microsoft.Office.Interop.Excel.Worksheet

'applicazione Excel
excelApp = New Microsoft.Office.Interop.Excel.Application
'cartella di lavoro Excel
FileExcel = excelApp.Workbooks.Open(percorso.Text)
excelApp.Visible = False


FileExcel.Activate()

'seleziono il primo foglio

FoglioExcel = FileExcel.Worksheets(1)

Dim numcolonna As Integer = 1
Dim cognomec As Integer
Dim nomec As Integer
Dim indirizzoc As Integer

'Trova la colonna interessata
For numcolonna = 1 To 50
If FoglioExcel.Cells(1, numcolonna).value = "cognome" Then
cognomec = numcolonna
ElseIf FoglioExcel.Cells(1, numcolonna).value = "nome" Then
nomec = numcolonna
ElseIf FoglioExcel.Cells(1, numcolonna).value = "indirizzo" Then
indirizzoc = numcolonna
End If
If FoglioExcel.Cells(1, numcolonna).value = "" Then
Exit For
End If
Next

Dim numriga As Integer = 2
Dim destI, indirizzoI As String

For numriga = 2 To 30000
If FoglioExcel.Cells(numriga, 2).value = "" Then
Exit For
End If

destI = FoglioExcel.Cells(numriga, cognomec).value & " " & FoglioExcel.Cells(numriga, nomec).value
indirizzoI = FoglioExcel.Cells(numriga, indirizzoc).value

Dim sql As String 'variabile dove memorizzo la stringa sql

'query d'inserimento
sql = "INSERT INTO importabusta(destinatario,indirizzo,idcategoria) " & _
"VALUES ('" & destI & "','" & indirizzoI & "'," & idcategoriaI & ")"

'effettuo la connessione al database ed eseguo la query d'inserimento memorizzando nella variabile
Dim cmd As New OleDbCommand(sql, Cn)
'esegue la query d'inserimento
cmd.ExecuteNonQuery()
Next

FoglioExcel = Nothing
FileExcel = Nothing
excelApp.Quit()
excelApp = Nothing
End Sub


Nel primo ciclo scandisco i file sulla prima riga e cerco tra le colonne quelle che mi interessano in questo caso cognome,nome,indirizzo (perchè il file contiene altre colonne) e mi salvo i valori in cui si trovano.
Nel secondo scandisco le righe e a quella determinata colonna mi salvo i valori nel DB fino a quando la riga non è vuota (in questo caso ho letto tutto il file).
Il file contiene più di 900 righe ma ne può contenere molte di più volevo sapere se il metod che sto utilizzando è il migliore o ce ne sono altri molto più veloci?
grazie in anticipo :D :help: