如何使用POI SXSSF读取大型电子表格

15

我正在尝试使用SXSSF读取xls文件。我已经了解了SXSSF,但不太清楚如何使用它。所以我遇到了一些问题。

有人能帮我提供用于读取大型xls文件(大约100,000行和7-8个工作表)的Java代码吗?

(从评论中编辑)

这是我尝试过的:

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); 
    } 
 } 

1
你尝试过什么?例如这个或者那个 - nobeh
我已经尝试过类似这样的东西... - abhi
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); } } - abhi
首先尝试运行您正在使用的API提供的示例,然后尝试简单的场景,最后再尝试您的用例,这样当问题出现时,您就知道该去哪里查找。 - d1e
3
SXSSF 是只能写入的。请查看此之前的问题。 - glassfish
2个回答

23

示例已移至 https://svn.apache.org/repos/asf/poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java。 - Matt Wallis

1
SXSSF(自3.8-beta3起)-是XSSF的流式扩展,用于在必须生成非常大的电子表格时使用。
正如您所看到的,明确指定了当需要生成大型电子表格时使用SXSSF。您可以使用XSSF。它类似且足够好。

不幸的是,当使用XSSF读取小型Excel文件时,有时会消耗所有服务器内存并抛出OutOfException:/ - Muflix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接