Ошибка при чтении больших файлов Excel (xlsx) через Apache POI

Я пытаюсь читать большие файлы Excel XLSX через Apache POI, скажем, 40-50 МБ. Я получаю исключение памяти. Текущая куча памяти составляет 3 ГБ.

Я могу читать меньшие файлы 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+ "\"");


    }    

}

Я впервые начал использоватьXSSFWorkbook workbook = new XSSFWorkbook(FileInputStream in); но это было дорого для API Apache POI, поэтому я переключился на пакетный подход OPC, но все тот же эффект. Мне не нужно анализировать или обрабатывать файл, просто прочитайте его и верните.

Ответы на вопрос(4)

Ваш ответ на вопрос