用poi读取EXCEL问题,怎么才能读取6M多的文件呢?
运行就报Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 错
好象只能读1M以下的

解决方案 »

  1.   

    1.先用增加Java虚拟机内容的方式试试 -Xms256M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M2.另外我感觉要是简单操作Excel的话。用jxl也是个不错的选择,大致用法如下:
    一、创建文件 
    拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下: 
    代码(CreateXLS.java): 
    //生成Excel的类 
    import java.io.*; 
    import jxl.*; 
    import jxl.write.*; 
    public class CreateXLS 

    public static void main(String args[]) 

    try 

    //打开文件 
    WritableWorkbook book= 
    Workbook.createWorkbook(new File(“测试.xls”)); 
    //生成名为“第一页”的工作表,参数0表示这是第一页 
    WritableSheet sheet=book.createSheet(“第一页”,0); 
    //在Label对象的构造子中指名单元格位置是第一列第一行(0,0) 
    //以及单元格内容为test 
    Label label=new Label(0,0,”test”); 
    //将定义好的单元格添加到工作表中 
    sheet.addCell(label); 
    /*生成一个保存数字的单元格 
    必须使用Number的完整包路径,否则有语法歧义 
    单元格位置是第二列,第一行,值为789.123*/ 
    jxl.write.Number number = new jxl.write.Number(1,0,789.123); 
    sheet.addCell(number); 
    //写入数据并关闭文件 
    book.write(); 
    book.close(); 
    }catch(Exception e) 

    System.out.println(e); 



    编译执行后,会在当前位置产生一个Excel文件。 
    三、读取文件 
    以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下: 
    //读取Excel的类 
    import java.io.*; 
    import jxl.*; 
    public class ReadXLS 

    public static void main(String args[]) 

    try 

    Workbook book= 
    Workbook.getWorkbook(new File(“测试.xls”)); 
    //获得第一个工作表对象 
    Sheet sheet=book.getSheet(0); 
    //得到第一列第一行的单元格 
    Cell cell1=sheet.getCell(0,0); 
    String result=cell1.getContents(); 
    System.out.println(result); 
    book.close(); 
    }catch(Exception e) 

    System.out.println(e); 



    程序执行结果:test 
    四、修改文件 
    利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表: 
    //修改Excel的类,添加一个工作表 
    import java.io.*; 
    import jxl.*; 
    import jxl.write.*; 
    public class UpdateXLS 

    public static void main(String args[]) 

    try 

    //Excel获得文件 
    Workbook wb=Workbook.getWorkbook(new File(“测试.xls”)); 
    //打开一个文件的副本,并且指定数据写回到原文件 
    WritableWorkbook book= 
    Workbook.createWorkbook(new File(“测试.xls”),wb); 
    //添加一个工作表 
    WritableSheet sheet=book.createSheet(“第二页”,1); 
    sheet.addCell(new Label(0,0,”第二页的测试数据”)); 
    book.write(); 
    book.close(); 
    }catch(Exception e) 

    System.out.println(e); 


      

  2.   

    6m那么大啊
    我读的都很小。
    如果excle文件里面的数据条数超过3000条的话估计会有问题。
      

  3.   

    用jxl生成2m多的excel试过,sheet大概有100多个。
      

  4.   

    我也遇到过不过暂时还没解决,但可不可以显示生成的excel 文件的大小呢,我认为 如果可以 也是一种方式