Ich habe einen Code, der Daten aus Excel in SQLServer-Tabelle lädt. Es funktioniert gut, aber ich muss wissen, ob es einen besten Weg gibt, es zu tun, ich meine den Prozess schneller. Das liegt daran, dass ich in der Excel-Datei in der Regel etwa 7000 Zeilen habe und das Laden der Zeit zu lang ist (natürlich lade ich Zeile für Zeile).MVC Daten von Excel zu SQLServer laden
Hier ist der Code für Ihre Analyse.
Dim varExcel As Object = CreateObject("Excel.Application")
Dim varBook As Object = varExcel.Workbooks.Open(varFileName, True, True, , "")
Dim varSheet As Object = varExcel.Worksheets(1)
Dim varArray As Object = varSheet.Range("A1:A65000").Value
varCount = 1
For vari As Integer = 2 To varArray.GetUpperBound(0)
If Not String.IsNullOrEmpty(varArray(vari, 1)) Then
varCount = varCount + 1
Else
Exit For
End If
Next
Try
varArray = Nothing
varArray = varSheet.Range("A1:L" & varCount).Value
For vari As Integer = 2 To varArray.GetUpperBound(0)
varCount = vari
Dim varSec = funGetSec("mytable")
Dim varTemp As New TEMPORAL
varTemp.ID_TEMPORAL = varSec.NUMERO_SECUENCIAL
If Not varArray(vari, 1) Is Nothing Then varTemp.CEDSOC = varArray(vari, 1).ToString.Trim.ToUpper
If Not varMatrizDatos(vari, 2) Is Nothing Then varTemp.DFCOPR = varArray(vari,2).ToString.Trim.ToUpper
If Not varArray(vari, 3) Is Nothing Then varTemp.NOMSOC = varArray(vari, 3).ToString.Trim.ToUpper
If Not varArray(vari, 4) Is Nothing Then varTemp.DF_FCR = varArray(vari, 4).ToString.Trim.ToUpper
If Not varArray(vari, 5) Is Nothing Then If IsNumeric(varArray(vari, 5)) Then varTemp.DFTOVA = CDec(varArray(vari, 5))
If NotvarArray(vari, 6) Is Nothing Then If IsNumeric(varArray(vari, 6)) Then varTemp.DFINTE = CDec(varArray(vari, 6))
If Not varArray(vari, 7) Is Nothing Then If IsNumeric(varArray(vari, 7)) Then varTemp.K_FALTANTE0 = CDec(varArray(vari, 7))
If Not varArray(vari, 8) Is Nothing Then If IsNumeric(varArray(vari, 8)) Then varTemp.CARDIA = CLng(varArray(vari, 8))
If Not varArray(vari, 9) Is Nothing Then If IsNumeric(varArray(vari, 9)) Then varTemp.DFNUVA = CLng(varArray(vari, 9))
If Not varArray(vari, 10) Is Nothing Then If IsNumeric(varArray(vari, 10)) Then varTemp.BFBECD = CLng(varArray(vari, 10))
If Not varArray(vari, 11) Is Nothing Then varTemp.BFBPTX = varArray(vari, 11).ToString.Trim.ToUpper
If Not varArray(vari, 12) Is Nothing Then varTemp.A0BFTX = varArray(vari, 12).ToString.Trim.ToUpper
varTemp.BFA0CD = CLng(66)
varTemp.FECHA = CDate(Now.Date)
varEntidades.AddToTEMPORALSet(varTemp)
varEntidades.SaveChanges()
Next
varExcel.DisplayAlerts = False
varBook.Close(SaveChanges:=False)
varExcel.Quit()
varSheet = Nothing
varBook = Nothing
varExcel = Nothing
' Exec Stored Procedure '
Dim varResp As Long
Dim varABC As ABC = GetABC(parIDABC)
If Not varEntidades.spABC(parIDABC, varResp, varErrMensaje) Then
If Not varEntidades.spErrorABC(varErrMensaje) Then Throw New ArgumentException(varErrMensaje)
Throw New ArgumentException(varErrMensaje)
End If
Catch ex As Exception
varExcel.DisplayAlerts = False
varBook.Close(SaveChanges:=False)
varExcel.Quit()
varSheet = Nothing
varBook = Nothing
varExcel = Nothing
If Not varEntidades.spErrorABC(varErrMensaje) Then Throw New ArgumentException(varErrMensaje)
Throw New ArgumentException(ex.Message & " - Review Excel file - row number: " & varCount)
End Try
Return Something
Ich hoffe, dass dies jemand anderen auch helfen.
Ich werde es versuchen. Grüße. –