【发布时间】:2015-12-08 10:54:01
【问题描述】:
在我的项目中,我想生成一个包含 85 列的 Excel 文件,并且行会每天增加。
现在我有大约 6K 条记录。在生成文件时,它总是给我 Java 堆空间异常。
我的堆空间设置是
-Xmx2048M
-Xmx6144M
我的代码是
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("FIELD OPERATIONS TRACKER");
for (int i=0; i < list.size(); i++)
{
HSSFRow rowHeader = sheet.createRow(i);
HSSFCell cell = rowHeader.createCell(0);
cell.setCellValue(list.get(i).getName());
cell = rowHeader.createCell(1);
cell.setCellValue(list.get(i).getSeason());
//like this I have 85 columns here
}
请帮助我提高性能
【问题讨论】:
-
您生成的是旧的 .xls 文件而不是 .xlsx 文件?这有充分的理由吗?如果要创建 xlsx 文件,可以使用 SXSSFWorkbook 而不是 HSSFWorkbook
-
@rjdkolb 我将尝试使用 .xlsx
-
XSSFWorkbook 是通用的 xlsx 编写器。 SXSSFWorkbook 对于非常大的文档来说是更好的选择。我用少量内存生成 10-20 兆的文档。
-
@rjdkolb 我遇到了与 SXSSFWorkbook 相同的问题。仅在 for 循环中,我得到堆空间异常
-
使用 3.13 更改了我这边的代码,使其具有 85 个循环计数以创建 85 列和 6000 的列表大小。它在大约 2 秒内创建了一个 1.2 兆的 xlsx 文件。