读取非常大的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)。
谢谢