Fehler beim Lesen großer Excel-Dateien (xlsx) über Apache POI

Ich versuche, große Excel-Dateien xlsx über Apache POI zu lesen, sagen wir 40-50 MB. Ich bekomme eine Speicherausnahme. Der aktuelle Heapspeicher beträgt 3 GB.

Ich kann kleinere Excel-Dateien ohne Probleme lesen. Ich brauche eine Möglichkeit, große Excel-Dateien zu lesen und sie dann als Antwort über die Spring Excel-Ansicht zurückzusenden.

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+ "\"");


    }    

}

Ich habe zuerst angefangen mitXSSFWorkbook workbook = new XSSFWorkbook(FileInputStream in); aber das war teuer pro apache POI API, also habe ich auf OPC Paket umgestellt aber immer noch den gleichen Effekt. Ich muss die Datei nicht analysieren oder verarbeiten, sondern muss sie nur lesen und zurückgeben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage