我正在使用Apache POI編寫Excel文件。JAVA - 編寫Excel文件時出現Apache POI OutOfMemoryError
我想在它來寫的myResultSet
其具有存儲在字符串[]字段名的字段名(列)中的所有數據。
我有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它與異常停止:
異常在線程「線程3」 java.lang.OutOfMemoryError:在java.lang.AbstractStringBuilder Java堆空間 (AbstractStringBuilder.java:45 ) at java.lang.StringBuffer。(StringBuffer.java:79)
看來我內存不足了。
我該如何解決這個問題。
有沒有我的數據存儲到一個臨時文件它們(例如)每1000的方法嗎?
你會建議什麼?
我用JXL和永遠解決不了,要麼(JAVA - Out Of Memory Error while writing Excel Cells in jxl)
現在我反正需要XLSX文件有同樣的問題,所以我必須使用POI。
您正在使用哪個應用程序服務器? – 2018-01-17 11:08:00