1

Excel ファイル (.xlsx、.xls) を読み取るアプリケーションを構築しようとしています。残念ながら、OleDbDataAdapter.Fill() のパフォーマンスは驚くほど悪いです。ファイルから 1 つのレコードを読み取るのに最大 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;

あなたの助けは大歓迎です!

ありがとう!

4

1 に答える 1