Как импортировать файл Excel с миллионами строк в таблицу данных? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть файл Excel, который содержит миллион строк и 25 столбцов.

При переносе данных Excel в datatable в datatable передаются только от 8000 до 9000 строк.Но в файле миллион строк.

Я попробовал следующий код:


<connectionStrings>  
    <!--Connect excel for bulk upload-->
    <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
    <add name="Excel07+ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
  </connectionStrings>

connString = String.Format(connString, excelPath)
        Using excel_con As New OleDbConnection(connString)
            excel_con.Open()
            Dim sheet1 As String = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing).Rows(0)("TABLE_NAME").ToString()
            Dim dtExcelData As New DataTable()
            dtExcelData.Columns.AddRange(New DataColumn(3) {New DataColumn("Document Type", GetType(String)), _
                                                            New DataColumn("Posting period", GetType(Decimal)), _
                                                            New DataColumn("Profit Center", GetType(String))                      })
            Using oda As New OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con)
                oda.Fill(dtExcelData)
            End Using
            excel_con.Close()
        End Using

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 30 мая 2019

Не используйте объект Excel.Application, считывайте данные из файла Excel напрямую с помощью операций xml. Для этих целей я использую бесплатную и лицензированную MIT библиотеку .NET SpreadsheetLight (spreadsheetlight.com). Это невероятно быстро по сравнению с объектом Excel.

...