相关疑难解决方法(0)

通过Apache POI读取大型Excel文件(xlsx)时出错

我试图通过Apache POI读取大型excel文件xlsx,比如40-50 MB.我失去了内存异常.当前堆内存为3GB.

我可以毫无问题地阅读较小的excel文件.我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回.

public class FetchExcel extends AbstractView {


    @Override
    protected void renderMergedOutputModel(
            Map model, HttpServletRequest request, HttpServletResponse response) 
    throws Exception {

    String fileName = "SomeExcel.xlsx";

    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    OPCPackage pkg = OPCPackage.open("/someDir/SomeExcel.xlsx");

    XSSFWorkbook workbook = new XSSFWorkbook(pkg);

    ServletOutputStream respOut = response.getOutputStream();

    pkg.close();
    workbook.write(respOut);
    respOut.flush();

    workbook = null;                    

    response.setHeader("Content-disposition", "attachment;filename=\"" +fileName+ "\"");


    }    

}
Run Code Online (Sandbox Code Playgroud)

我第一次开始使用,XSSFWorkbook workbook = new XSSFWorkbook(FileInputStream in); 但每个Apache POI API的成本很高,所以我切换到OPC包的方式,但仍然是相同的效果.我不需要解析或处理文件,只需读取并返回即可.

java out-of-memory xlsx apache-poi

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

apache-poi ×1

java ×1

out-of-memory ×1

xlsx ×1