Я пишу файл Excel, используя Apache POI.
Я хочу записать в него все данные myResultSet
, в которых имена полей (столбцы) хранятся в полях String [].
У меня 70000 строк и 27 столбцов
Мой код:
String xlsFilename = "myXLSX.xlsx";
org.apache.poi.ss.usermodel.Workbook myWorkbook = new XSSFWorkbook();
org.apache.poi.ss.usermodel.Sheet mySheet = myWorkbook.createSheet("myXLSX");
Row currentRow = mySheet.createRow(0);
for (int k = 0; k < fieldNames.length; k++) {
// Add Cells Of Title Of ResultsTable In Excel File
currentRow.createCell(k).setCellValue(fieldNames[k]);
}
for (int j = 0; j < countOfResultSetRows; j++) {
myResultSet.next();
currentRow = mySheet.createRow(j + 1);
for (int k = 0; k < fieldNames.length; k++) {
currentRow.createCell(k).setCellValue(myResultSet.getString(fieldNames[k]));
System.out.println("Processing Row " + j);
}
}
FileOutputStream myFileOutputStream = new FileOutputStream(xlsFilename);
myWorkbook.write(myFileOutputStream);
myFileOutputStream.close();
Моя проблема в том, что при записи строк программа становится все медленнее и медленнее.
Когда он достигает строки 3500, он останавливается с исключением:
Исключение в потоке "Thread-3" java.lang.OutOfMemoryError: пространство кучи Java в java.lang.AbstractStringBuilder. (AbstractStringBuilder.java:45) at java.lang.StringBuffer. (StringBuffer.java:79)
Кажется, мне не хватает памяти.
Как мне решить эту проблему.
Естьесть ли способ хранить мои данные во временном файле каждые 1000 (например)?
Что бы вы предложили?
У меня была такая же проблема с использованием jxl, и я никогда ее не решал ( JAVA - Ошибка нехватки памяти при записи ячеек Excel в jxl )
сейчасВ любом случае мне нужны файлы xlsx, поэтому я должен использовать POI.