我有近 100,000 条记录的数据,我正在尝试通过 Java 代码将数据写入.xlsx
文件。XSSFWorkbook
我能够将所有数据从数据库获取到ArrayList
. 通过迭代ArryList
,我将数据.xlsx
逐个单元格地写入文件。当它达到 8000 行时,java 代码会抛出Out of Memory Heap Space
错误。
我在某个地方读过,SXSSFWorkbook
与 相比会更轻XSSFWorkbook
,所以我尝试使用SXSSFWorkbook
. 但我仍然面临同样的问题。
那么工作簿或我的 Java 代码有什么遗漏吗?
最初,当我有 60,000 条记录数据时,我使用了.xls
file. 相同的 java 代码能够生成.xls
带有HSSFWorkbook
.
增加 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);
}