簡體   English   中英

為什么OleDbDataAdapter.Fill()非常慢?

[英]Why is the OleDbDataAdapter.Fill() extremely slow?

我正在嘗試構建一個將讀取excel文件(.xlsx,.xls)的應用程序。 不幸的是,OleDbDataAdapter.Fill()的表現非常糟糕。 我花了2分鍾從文件中讀取一條記錄。

有關該文件的更多信息:

  1. 尺寸 - 257MB
  2. 專欄 - 104
  3. 行 - 1 000 000

我目前正在使用的代碼來讀取文件:

    string conStr = string.Empty;
    string strQuery = string.Empty;
    switch (extension)
    {
        case ".xls": //Excel 97-03
            conStr = @"Provider=Microsoft.Jet.OleDb.12.0;Data Source=" + file_source + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';";
            strQuery = "SELECT " + col_no + " * FROM [" + workbook + "] ";
            break;

        case ".xlsx": //Excel 07
            //connection string to connect to the xlsx file
            conStr = @"Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + file_source + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;';";
            strQuery = "SELECT " + col_no + " * FROM [" + workbook + "] ";
            break;
    }
    DataTable tbl = new DataTable();
    OleDbDataAdapter ada = new OleDbDataAdapter(strQuery, conStr);
    ada.Fill(tbl);
    ada.Dispose();

    return tbl;

非常感謝您的幫助!

謝謝!

將大型數據集存儲在Excel文件中是一個壞主意。 在我看來,預計在2分鍾內讀取250MB的Excel文件。

我建議切換到任何數據庫解決方案。 但是,如果您無法更改數據存儲,則可以嘗試使用Excel COM對象(但它需要在服務器計算機上安裝Excel)。 是Teddy Garland的漫步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM