我有几千行的表,但即使我尝试读取 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 cpu 的 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.
关于excel - OleDb - 从 Excel 读取缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663562/