Java Apache POI – Форматирование ячеек и перезагрузка

У меня есть программа, которая берет входной файл и помещает его в excel. Все отлично работает до 32000-й линии. Вдруг форматирование левого выравнивания перестает работать. Кроме того, похоже, внезапно возобновляется работа над 65000-й строкой. Я не уверен, что происходит или почему. Я предоставил код для функции, в которой происходит форматирование.

private static void addDataToExcel(ArrayList<String[]> rowList, int amtOfColumns){ SXSSFRow row = null; String[] colValues = null; for(int i = 1 ; i<= rowList.size() ;i++){ row = (SXSSFRow) worksheet.createRow(rowCount); //TODO: Check if really necessary since for loop starts at 1 now if(i == 0){ } else { colValues = rowList.get(i-1); } CellStyle style = workbook.createCellStyle(); style.setAlignment(XSSFCellStyle.ALIGN_RIGHT); for(int j=0; j < amtOfColumns; j++){ if(colValues[j] == null){ SXSSFCell cell = (SXSSFCell) row.createCell(j); cell.setCellValue(colValues[j+1]); cell.setCellStyle(style); } else{ //System.out.println(j); SXSSFCell cell = (SXSSFCell) row.createCell(j); cell.setCellValue(colValues[j]); cell.setCellStyle(style); } } rowCount++; } System.out.println("Running..."); 

Проблема в том, что вы создаете один стиль ячейки для каждой строки, а это не то, как вы должны поступать. Excel имеет довольно низкое ограничение на максимальное количество стилей ячеек, которые может обрабатывать рабочая тетрадь.

Поскольку стили ячеек – это рабочая область, вы должны изменить свой код, вместо этого

 SXSSFRow row = null; String[] colValues = null; CellStyle style = workbook.createCellStyle(); style.setAlignment(XSSFCellStyle.ALIGN_RIGHT); for (int i = 1 ; i<= rowList.size() ; i++) { row = (SXSSFRow) worksheet.createRow(rowCount); 

Это позволит вам не использовать доступные стили ячеек, и поэтому ваша программа должна работать правильно

  • Вставка данных XLSX в базу данных
  • Не получать размер при загрузке Excel из JSP-файла
  • Как вывести содержимое определенной строки из файла CSV?
  • Как читать и писать очень большие данные с листа excel с помощью apache poi?
  • Преобразование типа XSSFCell в строку java
  • создать excel с помощью Java
  • Apache POI создает org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
  • заполнять определенные поля в Excel из таблиц в pdf
  • Преобразование динамических данных в листы Excel
  • Читайте только несколько столбцов из листа excel
  • в генерации большого количества листов с использованием функции excel sum JXLS не работает должным образом
  • Давайте будем гением компьютера.