我需要在xls文件(Microsoft 97-xp)中編寫超過1,000,000行的結果集。所以我試圖使用JExcel API但是我得到錯誤OutOfMemoryError:Java堆空間。除了增加JVM內存或創建不同的Excel文件,然後手動合併它們,我該如何解決這個問題。我甚至不想創建CSV文件。請幫忙。OutofMemoryError:寫入大號時出現Java堆空間。的行到xls文件
示例代碼:
int sheetNumber = 1;
int maxSheetSize=65000;
int start = 0;
int end=maxSheetSize;
int totalsize=1000000;
int completed = 0;
int columnCount=10;
WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
while (completed < totalsize) {
WritableSheet sheet = workbook.createSheet("Sheet " + (sheetNumber++), 0);
for (int r = start; r < end; r++) {
int i=1;
for (int c = 0; c < columnCount; c++) {
Label label = new Label(c, i, "data from resultset");
sheet.addCell(label);
}
i++;
}
completed += (end - completed);
start = end;
end = (totalsize - completed) < maxSheetSize ? (totalsize - completed) : completed + maxSheetSize;
end = end < maxSheetSize ? totalsize : end;
}
workbook.write();
workbook.close();
不支持在Excel中寫入1M行。見http://office.microsoft.com/en-001/excel-help/excel-specifications-and-limits-HP005199291.aspx –