Visual Basic Importieren von Excel-Arbeitsblatt zu DataTable

Derzeit arbeite ich mit einer riesigen Menge von Daten in Excel, und ich möchte, hochgeladen in eine DataTable in VB.Net (bei 70.000 Zeilen pro 30 Spalten) mit gemischten Datentypen.

Bin ich mit dem nächsten code zum importieren der Informationen:

Public Function mc_ExcelTableToDataTable(ByRef ExcelApp As Excel.Application, _
                                          ByVal SheetName As String, _
                                          ByVal TableName As String, _
                                          Optional ByVal FilePath As String = "", _
                                          Optional ByVal SQLsentence As String = "") As DataTable


        Dim vPath As String
        Dim vCloseExcelWorkbook As Boolean = False

        If ExcelApp.ActiveWorkbook IsNot Nothing Then
            vPath = IIf(FilePath = "", ExcelApp.ActiveWorkbook.FullName, FilePath)
        Else
            vPath = FilePath
        End If

        If SQLsentence = "" And ExcelApp.ActiveWorkbook Is Nothing Then
            vCloseExcelWorkbook = True
            ExcelApp.Workbooks.Open(vPath)
        End If

        Dim vRange As String = ExcelApp.Sheets(SheetName).ListObjects(TableName).Range.AddressLocal

        vRange = vRange.Replace("$", "")

        Dim vCNNstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                    "Data Source= " & vPath & ";" & _
                                    "Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""

        Dim ExcelCNN As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(vCNNstring)

        Dim vSQL As String = IIf(SQLsentence = "", _
                                 "SELECT * FROM [" + SheetName + "$" & vRange & "]", _
                                 SQLsentence)

        Dim ExcelCMD As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(vSQL, ExcelCNN)

        ExcelCNN.Open()
        Dim ExcelDS As System.Data.DataSet = New DataSet
        ExcelCMD.Fill(ExcelDS)

        mc_ExcelTableToDataTable = ExcelDS.Tables(0).Copy

        ExcelCMD = Nothing
        ExcelCNN.Close()

        ExcelDS.mc_Dispose()

        If vCloseExcelWorkbook Then ExcelApp.ActiveWorkbook.Close(False)

        GCcleaner()
    End Function

Aber, VB.Net geben Sie mir die folgende Fehlermeldung:

Visual Basic Importieren von Excel-Arbeitsblatt zu DataTable

Jemand weiß, was ist die maximale Kapazität der Anbieter ACE.OLEDB.12.0?
Oder wie man dieses Problem lösen?

FYI, dies ist der SQL-select-Satz:

SELECT * FROM [Workflow data$A1:AC70276]

Ist es wichtig zu erwähnen, dass, wenn ich die Grenze der Zeilen zu 20000 (SELECT * FROM [Daten des Workflow$A1:AC20000]), wird der Prozess funktioniert!

InformationsquelleAutor MiBol | 2012-09-17
Schreibe einen Kommentar