HSSFWorkbook阅读性能很慢

时间:2017-08-18 22:24:18

标签: java android excel apache apache-poi

我对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);

1 个答案:

答案 0 :(得分:0)

您可以尝试使用SXSSFWorkbook,它适用于大型Excel工作表,因为它不会将整个足迹存储到内存中。 Here's它的文档:

  

SXSSF是一种API兼容的XSSF流媒体扩展,可在以后使用   必须生成非常大的电子表格,并且堆空间是   有限。 SXSSF通过限制访问来实现其低内存占用   滑动窗口内的行,而XSSF提供访问权限   文档中的所有行。窗口中不再有的旧行   无法访问,因为它们被写入磁盘。

由于这不会将整个文件存储在内存中,因此您可能需要稍微调整一下逻辑,因为一旦读完内容,就无法返回上一行。

Here是使用SXSSFWorkbook读取文件的示例。