.xlsx
文件,使用的是XSSFWorkbook
。我能够从数据库中获取所有数据到一个ArrayList
中。通过迭代ArryList
,我逐个单元格地将数据写入.xlsx
文件。当它达到8000行时,Java代码会抛出
Out of Memory Heap Space
错误。我曾经在某处读到过SXSSFWorkbook
比XSSFWorkbook
更轻巧,所以我尝试使用了SXSSFWorkbook
。但仍然遇到同样的问题。那么,我的工作簿或Java代码有什么问题吗?最初,当我有6万条记录数据时,我使用了
.xls
文件。相同的Java代码可以使用HSSFWorkbook
生成.xls
文件。增加Java堆空间绝不是一个选项,因为我的数据将来会大大增加。
非常感谢任何帮助。
以下是我写入Excel数据的代码片段。
int rowNum = sheet.getLastRowNum();
Row lastRow = null ;
Cell cell = null;
ReportingHelperVo reportingHelperVo = null;
for (ReportingVo reportingVo : reportingVos) {
rowNum++;
lastRow = sheet.createRow(rowNum);
reportingHelperVo = reportingVo.reportingHelperVo;
cell = lastRow.createCell(0);
cell.setCellValue(reportingHelperVo.getLocation());
cell.setCellStyle(style);
cell = lastRow.createCell(1);
cell.setCellValue(reportingHelperVo.getCity());
cell.setCellStyle(style);
cell = lastRow.createCell(2);
cell.setCellValue(reportingHelperVo.getCountry());
cell.setCellStyle(style);
}