在我的项目中,我想生成一个包含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
}
请帮助我改善表现
答案 0 :(得分:1)
如果要创建.xlsx文件而不是.xls文件,只需使用新的SXSSFWorkbook()替换新的HSSFWorkbook()
Workbook wb = new SXSSFWorkbook();
Apache POI的工作人员做得很好。只需使用接口而不是HSSFCell和HSSFRow等特定类。
项目中需要两个依赖项:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${apache.poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${apache.poi.version}</version>
</dependency>
答案 1 :(得分:0)
Constant.MAX_ROW_IN_MEMORY = 1000; //设置为1000的常量
SXSSFWorkbook workBook =新的SXSSFWorkbook(Constant.MAX_ROW_IN_MEMORY); workBook.setCompressTempFiles(true);
尝试使用一个参数构造函数创建excel文件。并将setCompressTempFiles设置为true。在单个excel中成功编写2个Lakh记录,且内存少于1 GB。