【问题标题】:How Do I read an Excel 2007 spreadsheet with more than 65535 rows?如何读取超过 65535 行的 Excel 2007 电子表格?
【发布时间】:2011-04-27 15:58:04
【问题描述】:

这是我的连接字符串的样子..

m_conn = new OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=" + (char)34 + "Excel 12.0;HDR=YES" + (char)34, m_fileName));

当我进行选择时,我只返回 65535 行,但我知道 excel 电子表格至少有 100,000 行。我如何阅读其余的行。注意我现在必须使用 OLEDB,没有 3rd 方工具。

非常感谢!

编辑:这些是我正在使用的 Excel 2007/2010 文件

edit2:如果我执行“从工作表中选择 *”而不是“从工作表 WHERE 中选择 *”,我似乎实际上可以选择电子表格中的所有行

我猜当你实现 WHERE 子句时,结果行的上限为 65535

【问题讨论】:

    标签: c# excel select excel-2007 oledb


    【解决方案1】:

    您应该打开这些文件并在关闭兼容模式的情况下保存它们。您的查询将超过 64k。

    【讨论】:

      【解决方案2】:

      根据我的经验,Excel 工作表限制为 65535 行(Excel 到 2003,我不知道 2007 版本)。

      编辑#1

      我的猜测是,OleDB 数据提供程序可能需要更新来纠正这个 Excel 限制更改所引发的问题。

      【讨论】:

      • 根据free-training-tutorial.com/how-to/excel-row-limit.html,2007 年的限制似乎是 1,048,576 行
      • @Tom:感谢您向我提供这些信息,这是一个很好的变化,我从未被告知过。 =)
      • 更新了主帖以反映我在 oledb & excel 2007 中使用 select 语句发现的限制
      • 感谢您提供此信息!也许使用Linq 可能有助于以某种方式解决这个问题。只是在这里丢掉想法。我们永远不知道这会驱使我们去哪里! =P
      【解决方案3】:

      如果你只想读取 Excel 文件,我建议尝试开源的Excel Data Reader

      【讨论】:

        猜你喜欢
        • 2017-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        相关资源
        最近更新 更多