poi处理Excel内存溢出,急!多谢各位
public Workbook readExcel(String filePath){
logger.info("开始执行readExcel方法!");
FileInputStream fis = null;
BufferedInputStream bis = null;
Workbook wb = null;
File file;
try {
file = new File(filePath);
if( !file.exists() )
{
logger.info("程序报错-文件不存在");
throw new RuntimeException("文件不存在");
}else{
logger.info("正在读取文件"+filePath);
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
wb = WorkbookFactory.create(bis);
}
fis.close();
bis.close();
} catch (IOException e) {
logger.info(e);
e.printStackTrace();
} catch (InvalidFormatException e) {
logger.info(e);
e.printStackTrace();
} finally {
if(bis != null){
try {
fis.close();
bis.close();
} catch (IOException e) {
logger.info(e);
e.printStackTrace();
}
}
}
logger.info("readExcel方法执行结束!");
return wb;
}
用这个读取几千条数据没什么问题,但是读3w条数据就会报错内存溢出。。。怎么办呢?有什么解决办法么?谢谢各位了!
[解决办法]
将JVM内存设置大些
[解决办法]
如果没记错的话POI 都是一次性将excel完全加载到内存
如果excel文件很大的话 增大JVM内存是治标的方法
如果你用的是 office2007以上的 excel的话,可以用winrar等压缩工具 解压 就可以看到,里边是一些xml等文件 然后自己用sax方式解析吧(貌似网上有类似的东西)
[解决办法]
加大堆内存。配置一下
[解决办法]
无法彻底解决,只能曲线救国。
1、调大JVM内存
2、转换成xml,然后sax、dom4j解析等,文件大了也会溢出的吧?
3、分割excel文件