我对使用Android编程相当陌生,并且正在寻找一些帮助,我正在阅读的程序中,读取和excel文件,目前包含30张。当HSSFWorkbook读取该文件时,应用程序继续运行需要10到20秒的时间。有什么办法可以让我改进吗?每张纸包含40行和13列。目前,我一次只找一个特定的单张,所以我不需要其他的,直到稍后的电话。
由于javax.xml.stream的问题,我也不能使用XSSF
HSSFWorkbook wb = new HSSFWorkbook(pfile);
trimDate();
HSSFSheet sheet;
sheetD = wb.getSheetIndex(finalDate);
sheet = wb.getSheetAt(sheetD);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
// TODO: 8/16/2017 remove try when current Excel File is used
Row row = null;
try{row = sheet.getRow(2);}
catch (NullPointerException e){
error();
e.printStackTrace();
return;
}
Cell cell = row.getCell(11);
TextView pt = (TextView) findViewById(R.id.period_total);
CellValue cellValue = evaluator.evaluate(cell);发布于 2017-08-18 22:38:54
您可以尝试使用SXSSFWorkbook,它可以很好地处理大型Excel工作表,因为它不会将整个内存空间存储到内存中。下面是它的文档:
SXSSF是XSSF的一个与API兼容的流扩展,当需要生成非常大的电子表格时,需要使用它,堆空间是有限的。SXSSF通过限制对滑动窗口中的行的访问来实现其低内存占用,而XSSF允许访问文档中的所有行。当将旧行写入磁盘时,不再在窗口中的旧行变得不可访问。
因为这不会将整个文件存储在内存中,所以您可能需要稍微调整一下逻辑,因为一旦读取了内容,就无法返回到前面的任何行。
这里是用SXSSFWorkbook读取文件的示例。
https://stackoverflow.com/questions/45765755
复制相似问题