Excel ファイル (.xlsx、.xls) を読み取るアプリケーションを構築しようとしています。残念ながら、OleDbDataAdapter.Fill() のパフォーマンスは驚くほど悪いです。ファイルから 1 つのレコードを読み取るのに最大 2 分かかります。
ファイルに関する詳細情報:
- サイズ - 257MB
- 列 - 104
- 行 - 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;
あなたの助けは大歓迎です!
ありがとう!