日期:2014-05-20  浏览次数:20815 次

向已存在的excel文件中增加数据,出现内存溢出
File   excFile   =   new   File(exportFileName);
if   (excFile.exists()){
try   {
Workbook   newWorkBook   =   Workbook.getWorkbook(excFile);
this.writableWorkbook   =   Workbook.createWorkbook(excFile,newWorkBook);
}   catch   (BiffException   e)   {
throw   new   IOException(e.getMessage());
}
                }else{
                this.outputStream   =   new   FileOutputStream(exportFileName);
                this.writableWorkbook   =   Workbook.createWorkbook(this.outputStream);
                }

if(sheetName   ==   null)   {
this.writableSheet   =   writableWorkbook.createSheet( "Sheet1 ",   index);
}
else   {
this.writableSheet   =   writableWorkbook.createSheet(sheetName,   index);
}

向一个已存在有3万条记录的excel中增加数据时,在执行到this.writableWorkbook   =   Workbook.createWorkbook(this.outputStream);这句时出现内存溢出;我要在这个excel文件中开个新的sheet,再增加3万条记录

------解决方案--------------------
我是加大JVM堆栈大小能实现20000条……不知道还有别的方法没
------解决方案--------------------
你试着调大java的stack size的大小试试,具体的方法如下
设置一下stack size的大小 java 后跟参数即可设置,具体参数如下:
-Xms size set initial Java heap size
-Xmx size set maximum Java heap size
-Xss size set java thread stack size

------解决方案--------------------
能不能分批的进行存储啊,每10000条写一次excel文件
------解决方案--------------------
这个问题,似乎就楼上说的办法好。。
一次处理15000左右的数据,分多次处理把,,。。