Microsoft Open XML逐行使用SAX方法读取Excel文件并查找单元格数据

时间:2016-08-10 18:52:40

标签: c# excel openxml

我在这里查看了有关库存溢出的几篇帖子,但我找不到我正在寻找的东西,而我发现那些近似的东西似乎对我不起作用。 Using OpenXmlReader不会读取行,因为它似乎永远不会打开工作表数据到从未找到行的元素类型。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

读者可以非常快速地打开工作表,并在构建时通过检查SheetDimensions参考来计算其尺寸。

在检查工作簿的单元格和编号格式之后,它还能够格式化数字和日期。它甚至试图涵盖默认的编号格式案例。

读者使用分页是因为我想支持在服务器上提取分页结果,如果按顺序检索所有页面,它的效果最佳。由于萨克斯流式传输和内存使用率保持较低,因此预期的速度非常快。对此进行基准测试而不保留内存中的行,它从不使用超过10 MB(发布版本)。

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