【问题标题】:How to use POI SXSSF to read a large spreadsheet如何使用 POI SXSSF 读取大型电子表格
【发布时间】:2012-04-07 09:47:04
【问题描述】:

我正在尝试使用 SXSSF 读取 xls 文件。我已经阅读了有关 SXSSF 的信息,但不明白如何使用它。所以我遇到了一些问题。

任何人都可以帮助我阅读大型 xls 文件(大约 100,000 行和 7-8 张)的 java 代码。

(从 cmets 编辑)

这是我尝试过的:

Workbook workBook = new SXSSFWorkbook(200); 
workBook = WorkbookFactory.create(inputStream); 
Sheet sheet = workBook.getSheetAt(0); 
int totalRows = sheet.getPhysicalNumberOfRows(); 

for (int i=0; i<totalRows; i++) { 
    Row row = sheet.getRow(i); 
    int totalCols = row.getPhysicalNumberOfCells(); 
    for(int j=0; j<totalCols; j++) { 
        Cell cell = row.getCell(j); 
    } 
 } 

【问题讨论】:

  • 我尝试过这样的事情.....
  • 工作簿 workBook = new SXSSFWorkbook(200); workBook = WorkbookFactory.create(inputStream); Sheet sheet = workBook.getSheetAt(0); int totalRows = sheet.getPhysicalNumberOfRows(); for(int i=0; i
  • 尝试首先运行提供的您正在使用的 API 示例,然后尝试简单的场景,然后再尝试您的案例,这样当出现问题时,您就知道去哪里了。
  • SXSSF 是只写的。请查看这个[上一期][1][1]:stackoverflow.com/questions/12513981/…

标签: java file xls


【解决方案1】:

SXSSF 仅用于写入大型 excel 文件 (xlsx),不用于读取。

要读取大型 excel 文件,请参考 Apache POI 的基于 SAX 解析的事件处理 API: https://poi.apache.org/components/spreadsheet/how-to.html.

一个很好的工作示例出现在: https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java

【解决方案2】:

SXSSF(自 3.8-beta3 起)– 是一种与 API 兼容的 XSSF 流式扩展,用于必须生成非常大的电子表格

如您所见,当要生成大型电子表格时,已明确指定使用 SXSSF。您可以使用 XSSF。它是相似的,也足够好。

【讨论】:

  • 不幸的是,XSSF 在读取小的 excel 文件时,有时会消耗所有服务器内存并抛出 OutOfException :/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多