我正在尝试构建一个将读取excel文件(.xlsx,.xls)的应用程序。不幸的是,OleDbDataAdapter.Fill()的表现非常糟糕。我花了2分钟从文件中读取一条记录。
有关该文件的更多信息:
我目前正在使用的代码来读取文件:
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;
非常感谢您的帮助!
谢谢!
答案 0 :(得分:3)
将大型数据集存储在Excel文件中是一个坏主意。在我看来,预计在2分钟内读取250MB的Excel文件。
我建议切换到任何数据库解决方案。但是,如果您无法更改数据存储,则可以尝试使用Excel COM对象(但它需要在服务器计算机上安装Excel)。 Here是Teddy Garland的漫步。