Написание большого количества строк с использованием 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. Это предположение.