如何解决OleDb-从Excel读取速度很慢
| 我的表有几千行,但是即使我尝试读取1000行(和10列),也要花费大约10秒钟才能得到结果。我认为它太慢了,但是我找不到任何问题。 读取数据的代码:string connectionString = string.Format(\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;\"\",_excelFilename);
using (OleDbConnection c = new OleDbConnection(connectionString)) {
c.Open();
OleDbCommand cmd = new OleDbCommand(\"SELECT * FROM [Trend_Data$A1:J1000]\",c);
OleDbDataReader dbReader = dbCommand.ExecuteReader();
while (dbReader.Read()) {
object[] values = new object[10];
dbReader.GetValues(values);
//save values into internal structure - fast
...
}
单步执行代码后,我发现调用ExecuteReader函数花费了很长时间。
您有什么想法,如何加速代码?
解决方法
试试我通过堆栈溢出发布的OleDBAdapter Excel QA。
我从上一篇文章中提取了工作表,并添加了列(共10个)和行(共10,000个),并打包了数据(excel文件为1,770 KB)。使用带有4 cpus的XP,Visual Studio 2010,该过程不到1秒。
在顶部添加:
Stopwatch queryWatch = new Stopwatch();
queryWatch.Start();
并在底部:
Console.WriteLine(\"Elapsed Query time: {0}.{1} seconds.\",queryWatch.ElapsedMilliseconds / 1000,queryWatch.ElapsedMilliseconds % 1000);
Console.ReadLine();
输出:
Elapsed Query time: 0.623 seconds.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。