JAVA-在jxl中写入Excel单元格时出现内存不足错误

JAVA-在jxl中写入Excel单元格时出现内存不足错误,excel,memory,memory-management,cells,jxl,Excel,Memory,Memory Management,Cells,Jxl,我正在使用JXL编写一个包含50000行和30列的excel文件。 我的代码如下所示: 对于(int j=0;j=2.6.9中可用。我在WorkbookSettings对象中找不到SetUseTimoraryFileDuringWrite。你们有什么版本的jxl?(更多信息,请参见我在下面发布的答案)@Stefanos,根据javadocs的说法,该功能似乎在verison>=2.6.9中可用 myWritableSheet.addCell(new Label(0, j, myResultSet

我正在使用JXL编写一个包含50000行和30列的excel文件。 我的代码如下所示:

对于(int j=0;j }

在写入单元格时,程序运行得越来越慢

最后,在25000行附近,我得到以下错误:

线程“thread-3”java.lang.OutOfMemoryError中出现异常:java堆空间 位于jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:984) 位于jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:951) 在KLL.ConverterMainFrame$exportToXLSBillRightsThread.run(ConverterMainFrame.java:6895)处

在Java中处理内存总是很困难的

在这种情况下,这似乎是jxl的问题

是否有办法写入文件、清除内存并每1000个单元写入一个单元


这是一个好主意还是你会提出什么解决方案?

提高VM可用内存(使用-Xms和-Xmx)不是一个选项?

提高VM可用内存(使用-Xms和-Xmx)不是一个选项?

有一些建议,包括上面Curtis的想法

如果你不介意表演的冲击,你可以用一个

政府提出了一些建议,包括上面柯蒂斯的想法

如果你不介意表演的冲击,你可以用一个


在WorkbookSettings对象中找不到SetUseTimoraryFileDuringWrite。你们有什么版本的jxl?(更多信息请参见我在下面发布的答案)@Stefanos,根据javadocs,该功能似乎在verison>=2.6.9中可用。我在WorkbookSettings对象中找不到SetUseTimoraryFileDuringWrite。你们有什么版本的jxl?(更多信息,请参见我在下面发布的答案)@Stefanos,根据javadocs的说法,该功能似乎在verison>=2.6.9中可用
myWritableSheet.addCell(new Label(0, j, myResultSet.getString(1), myWritableCellFormat));

myWritableSheet.addCell(new Label(1, j, myResultSet.getString(2), myWritableCellFormat));

.....

.....
WorkbookSettings s = new WorkbookSettings();  
s.setUseTemporaryFileDuringWrite(true);  
WritableWorkbook ws = Workbook.createWorkbook(new File("someFile.xls"),s);