首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSSFWorkbook读取性能缓慢

HSSFWorkbook读取性能缓慢
EN

Stack Overflow用户
提问于 2017-08-18 22:24:18
回答 1查看 1.2K关注 0票数 0

我对使用Android编程相当陌生,并且正在寻找一些帮助,我正在阅读的程序中,读取和excel文件,目前包含30张。当HSSFWorkbook读取该文件时,应用程序继续运行需要10到20秒的时间。有什么办法可以让我改进吗?每张纸包含40行和13列。目前,我一次只找一个特定的单张,所以我不需要其他的,直到稍后的电话。

由于javax.xml.stream的问题,我也不能使用XSSF

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2017-08-18 22:38:54

您可以尝试使用SXSSFWorkbook,它可以很好地处理大型Excel工作表,因为它不会将整个内存空间存储到内存中。下面是它的文档:

SXSSF是XSSF的一个与API兼容的流扩展,当需要生成非常大的电子表格时,需要使用它,堆空间是有限的。SXSSF通过限制对滑动窗口中的行的访问来实现其低内存占用,而XSSF允许访问文档中的所有行。当将旧行写入磁盘时,不再在窗口中的旧行变得不可访问。

因为这不会将整个文件存储在内存中,所以您可能需要稍微调整一下逻辑,因为一旦读取了内容,就无法返回到前面的任何行。

这里是用SXSSFWorkbook读取文件的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45765755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档