excel - OleDb - 从 Excel 读取缓慢

标签 excel oledb

我有几千行的表,但即使我尝试读取 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/

相关文章:

Excel VBA循环并以交互方式显示更改

excel - VBA 宏将返回连续的月末

python - 如何以编程方式编辑 Excel 工作表?

c# - 64 位模式不支持 OleDB?

excel - 如何在 Excel VBA 中将 const 定义为对象?

python - 从 Excel 到元组列表

c# - 在共享的 OleDbConnection/OleDbTransaction 中并行执行 ExecuteNonQuery

c# - KB4022726 破坏 OleDb 上的 Windows 搜索查询

c# - Visual FoxPro 9 C# OleDbAdapter 插入 - 功能不可用

c# - 使用 OleDB 打开 Excel(用 EPPLUS 创建)