java读取大型xlsx文件的一部分

时间:2016-08-08 13:04:49

标签: java apache-poi xls large-files

读取非常大的xlsx文件的一部分是最快且内存最少的方法是什么?

目前我有这段代码:

FileInputStream fis = null;
fis = new FileInputStream("D:/verylargefile.xlsx");

XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);

int r = sheet.getPhysicalNumberOfRows();    
int c = sheet.getRow(1).getLastCellNum(); 

for (int row = 1; rows < r;row++){
   for (int cell = 1; cell < c;cell++){
       int cellvalue = (int)sheet.getRow(row).getCell(cell).getNumericCellValue()
       //do some simple math op with that cell or several cells

   }
}

因此,我需要进行大量的简单数学运算(例如,每行中每5个单元格的平均值或类似值)并且速度非常快,同时只需要一小部分非常大的xlsx文件。使用上面的代码,我得到堆空间错误,10mb xlsx文件和1gb ram专用于java vm(-Xms1000M)。

谢谢

0 个答案:

没有答案