Написание большого количества строк с использованием jxls, чтобы преуспеть в Java

Я использую приведенный ниже код для записи данных, чтобы преуспеть

XLSTransformer трансформатор = новый XLSTransformer();

        InputStream is = this.getServlet().getServletContext()
                .getResourceAsStream(templateFilePath);
        HSSFWorkbook workBook = (HSSFWorkbook) transformer.transformXLS(is, beans);

Но система зависает после HSSFWorkbook workBook = (HSSFWorkbook) transformer.transformXLS(есть компоненты); если количество строк больше 1500. Есть ли другой способ или предложение для записи данных с использованием объектов шаблона и объектов bean для больших наборов данных

2 ответа

Вы можете перейти на Jxls-2 и использовать поддержку SXSSF Transformer. Код может выглядеть так

            Transformer transformer = PoiTransformer.createSxssfTransformer(workbook, 100, false);
            AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
            List<Area> xlsAreaList = areaBuilder.build();
            Area xlsArea = xlsAreaList.get(0);
            xlsArea.applyAt(new CellRef("Result!A1"), context);

Смотрите полный пример в jxls-demo. Обратите внимание, что этот подход предполагает некоторые шаблонные ограничения, поскольку в памяти хранится только подмножество строк (в частности, в отношении оценки формул).

Если вам не нужны формулы, рекомендуется отключить обработку формул с помощью context.getConfig().setIsFormulaProcessingRequired(false);

Вы можете попробовать использовать SXSSF - потоковую версию рабочей книги POI. Это предположение.

Другие вопросы по тегам