【问题标题】:Microsoft Open XML Read Excel file using SAX method row by row and finding cell dataMicrosoft Open XML 使用 SAX 方法逐行读取 Excel 文件并查找单元格数据
【发布时间】:2016-08-10 18:52:40
【问题描述】:

我在 stockoverflow 上查看了几篇文章,但我没有找到我正在寻找的内容,而且我发现那些很接近的帖子似乎对我不起作用。 Using OpenXmlReader 不读取行,因为它似乎永远不会将工作表数据打开到永远找不到行的元素类型。

我需要使用 OpenXmlPartReader 的 SAX 方法。我要做的是打开 Excel 文档并逐行阅读。对于每一行,我需要通过索引号或 id 以及该单元格中的值来获取几个单元格。所以我不需要遍历每个我知道我需要哪些单元格的单元格。

我想使用 SAX 方法来避免内存不足,因为我预计需要读取大文件。

【问题讨论】:

    标签: c# excel openxml


    【解决方案1】:

    我有一个类似的问题要解决。在结合了 SO 中的几个相关答案后,我编写了一个自定义 sax 阅读器,它能够从第一张纸中提取所有行。

    看看我的xlsx-sax-exporter github 项目,让我知道它是如何为你工作的。

    阅读器打开工作表的速度非常快,它通过在构造时检查SheetDimensions参考来计算其尺寸。

    它还可以在检查工作簿的单元格和编号格式后格式化数字和日期。它甚至试图涵盖默认编号格式的情况。

    阅读器使用分页,因为我想支持在服务器上提取分页结果,如果所有页面都按顺序检索,它的性能最好。由于 sax 流式传输和内存使用率保持在较低水平,它的速度与预期一样快。在不将行保存在内存中的情况下对此进行基准测试,它从不使用超过 10 MB(发布版本)。

    如果您要提出更改建议,请随时分叉并发送拉取请求,或者只是打开一个问题,我会在有时间时尝试处理它。

    【讨论】:

    • 更新:上面的链接不再有效,因为出于保密协议的原因我不得不将其删除。所以这里的答案不再提供任何东西。
    猜你喜欢
    • 2022-08-10
    • 2023-03-10
    • 2016-03-19
    • 1970-01-01
    • 2012-03-02
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多