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:
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: