【问题标题】:How to read paged rows from an excel or ods file?如何从 excel 或 ods 文件中读取分页行?
【发布时间】:2013-10-22 13:18:16
【问题描述】:

我们正在使用 java 和 ODF Toolkit 从 ods 和 excel 文件中读取行。

问题在于,即使您只想读取 1 行,也会加载整个文档,并且 50.000 行 ods 文件的内存使用量约为 350 MB。

所以我正在寻找一种通过分页读取行的方法。有机会

Edit1 : 请不要建议 POI ,就像 ODF Toolkit 一样工作。

Edit2:我接受了一个答案,但它只适用于 Excel 文件,并且没有适用于 ODS 文件的答案。

【问题讨论】:

    标签: java excel odf ods


    【解决方案1】:

    将 .ods 转换为 .xls /.xlsx 并使用更成熟的 poi api 可能会有所帮助。它允许读取特定的行/单元格,您可以使用它们来防止超出内存限制。

    【讨论】:

    • 您确定它没有将整个文档加载到内存中吗? ODF 具有读取单元格或行之类的所有方法,但是当您要获取 table 时,它​​将全部加载到内存中。
    • 我在 SO stackoverflow.com/questions/18147585/… 上将您重定向到此内容,这有助于给您一些想法。第一个建议相当明显,但第二个建议很重要。
    • 我已经阅读了该问题和答案,POI 的工作方式与 ODF 工具包没有任何不同。但是,对于分页需求的解决方案,SAX 处理有一个建议。我还没有绝望到要去做。谢谢你的观点:)
    • +1 用于 POI。 Java ODF 工具包不适合新手(截至 2020 年初,它似乎已停用,不再活跃)
    【解决方案2】:

    另一种方法可能是使用 JDBC 加载行。

    周围有各种 JDBC Excel 驱动程序,包括:

    https://code.google.com/p/sqlsheet/

    另见:

    Connecting to excel sheet using jdbc without specifying DSN to Excel sheet

    【讨论】:

    • sqlsheet 是个好主意。你有解决 ODS 文件的方法吗?
    • 不好意思,不知道有没有ODS的JDBC驱动。如果电子表格可以设置为 ODBC 数据源,则有 JDBCODBC 桥。不知道这是否对你有用。无论如何,我从来没有真正做过这些(只知道 Excel 是可能的)所以你需要进一步调查。
    • SQLSheet 下面仍然使用 POI
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多