POI堆空间异常或Excel 2007的任何可选java api?

POI堆空间异常或Excel 2007的任何可选java api?,java,excel,heap,Java,Excel,Heap,我一直在寻找解决这个问题的方法,但没有找到任何好的方法=( 因此,问题是我需要创建一个最多50.000个注册表的excel文件,当我这样做时,在50.000应用程序注册表中显示此错误: java堆空间 就我所见,解决这个问题的一个方法是增加堆内存,但我并不喜欢(急救),因为如果文件变大,服务器冻结并消耗大量内存,那么问题就会继续存在,试图这样做会变得很慢 我认为解决方案是写出excel文件,而不是将数据留在堆内存中,但我无法让它工作 任何有关excel 2007文件的想法或其他框架?请调用HSS

我一直在寻找解决这个问题的方法,但没有找到任何好的方法=(

因此,问题是我需要创建一个最多50.000个注册表的excel文件,当我这样做时,在50.000应用程序注册表中显示此错误:

java堆空间

就我所见,解决这个问题的一个方法是增加堆内存,但我并不喜欢(急救),因为如果文件变大,服务器冻结并消耗大量内存,那么问题就会继续存在,试图这样做会变得很慢

我认为解决方案是写出excel文件,而不是将数据留在堆内存中,但我无法让它工作

任何有关excel 2007文件的想法或其他框架?

请调用
HSSFWorkbook
上的
write()
方法,将excel工作簿持久化为一个文件:

FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

但正如所指出的,在POI中无法对文件进行流式写入。POI的替代方案是(开源)或(专有)

实际上,就我调试程序时所测试的而言,excel文件在fileOut.close()时创建;不知道为什么,尽管我尝试在multiples实例中调用write-metod来释放堆内存,但仍然有效,但只写了文件的最后一部分=(POI在内存方面不是很好。如果你想写一个大文件,你应该有巨大的内存。Thread显示了与我相同的错误,jxls基于POI库,因此不认为它会起作用,我认为解决方案可能是一个OSE单元,但我需要一些免费的=(,我将继续在thx中查找你的时间=D