首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

poi处理Excel内存溢出,谢谢各位

2013-12-10 
poi处理Excel内存溢出,急!多谢各位public Workbook readExcel(String filePath){logger.info(开始执行rea

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文件

热点排行