对于  Workbook wb = WorkbookFactory.create(fis); 想问一下,可不可以这么理解:生成一个woekbook,它包含了fis指向的excel表格中的所有内容?还是····求解 ···在线等大神!

解决方案 »

  1.   

    那wb里面是不是会有fis指向的excel表格中的所有内容呢?我在做一个excel导入,我要读入excel表头中的字段。数据量很大的时候,在 Workbook wb = WorkbookFactory.create(fis); 时就会抛出如下异常Servlet.service() for servlet default threw exception - 
    java.lang.OutOfMemoryError: Java heap space。数据量小的时候就没有问题。数据还没有读取操作,怎么会内存溢出呢?所以我就猜测是不是在 Workbook wb = WorkbookFactory.create(fis); 时wb里面已经包含了导入的excel表格中的全部内容。但是,我debug时,不知道怎么查看excel表格中的内容是否已经在wb中了,求指教。
      

  2.   

    java.lang.OutOfMemoryError内存溢出,一般是由创建的流操作没有正常关闭造成的,看看是否是这个原因。
      

  3.   

    fis在Workbook wb = WorkbookFactory.create(fis); 之前不能关闭啊,其他没有流了啊!!
      

  4.   

    你这个等于先加载这个excel文件在进行追加内容了。平常的POI这种方式载入excel时就跟jdom载入xml一样。一旦数据量很大的时候那么就会报出内存溢出了。这个时候不能用平常的方式来加载excel要用事件模型来加载excel。具体的方法http://poi.apache.org官网上有2003和2007事件模型加载大数据量excel的例子。