我正在使用 JXL 编写一个 50000 行 30 列的 Excel 文件。
我的代码如下所示:
for (int j = 0; j
myWritableSheet.addCell(new Label(0, j, myResultSet.getString(1), myWritableCellFormat));
myWritableSheet.addCell(new Label(1, j, myResultSet.getString(2), myWritableCellFormat));
.....
.....
}
写入单元格时,程序速度越来越慢
最后在第 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 个单元写入单元?
这是一个好主意吗?或者您还会提出什么其他解决方案?
The JExcel常见问题解答有一些建议,包括上面柯蒂斯的想法。
如果您不介意性能下降,您可以使用临时文件而不是在内存中完成所有操作.
WorkbookSettings s = new WorkbookSettings();
s.setUseTemporaryFileDuringWrite(true);
WritableWorkbook ws = Workbook.createWorkbook(new File("someFile.xls"),s);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)