我用java代码读取了Excel文件,当生成xml文件时,我的Excel文件内容超过20000条记录,所以生成xml文件就会出现内存溢出,请问有什么方法,处理这种问题。谢谢

解决方案 »

  1.   

    把java内存调整大一点吧!
    呵呵!!
      

  2.   

    顶,谁能解决问题,要是感觉分少,我可以在开一个,给分,只要能解决问题。我是用jxl读取Excel文件的。
    以下是我读取文件的代码?最多能读3000条,谁能帮我修改一下,我要读30000条数据。                            try{
    InputStream is = new FileInputStream("d:\\Excel.xls");
    jxl.Workbook rwb = Workbook.getWorkbook(is);
    Sheet rs=rwb.getSheet(0);

    String[] cols =   {"序号","机构代码","受理日期","结案日期","保单号","投保人","被投诉人","投诉来源","投诉原因","投诉险种","业务渠道","处理结果","是否推荐选入案例库","投诉事由","处理情况概述","客服意见","转出日期1","转办部门1","反馈日期1","接待人员1","转出日期2","转办部门2","反馈日期2","接待人员2","转出日期3","转办部门3","反馈日期3","接待人员3","转出日期4","转办部门4","反馈日期4","接待人员4","备注","","","","","","",""};  
    Element root=new Element("root");//创建根节点
    Document doc=new Document(root);//创建节点元素
    Element row=new Element("row"+0);//子节点
    for(int i=0;i<cols.length;i++){ //循环遍历列的值      
    Element dd=new Element("a"+i);
    dd.setText(cols[i]);
    row.addContent(dd);

    for(int i=3;i<2500;i++){   //遍历每行的数据
    String[] s =new String[cols.length];
    Element row2=new Element("row"+i);
    for(int j=0;j<cols.length;j++){            
    Cell c00 = rs.getCell(j,i);
    String strc00 = c00.getContents();
    Element dd=new Element("a"+j);
    dd.setText(strc00);
    row2.addContent(dd);            
    s[j]=strc00;
     }
     if ((s[0]==null||"".equals(s[0]))||(s[1]==null||"".equals(s[1]))||(s[2]==null||"".equals(s[2]))||(s[5]==null||"".equals(s[5]))){
     //判断1,2,3,5,列中是否有空的字符串,如果有终止循环
        break;
      }
     root.addContent(row2);             

    Format format=Format.getCompactFormat();
    format.setEncoding("UTF-8");//设置xml中的编码
    format.setIndent("  ");
    XMLOutputter XMLOut=new XMLOutputter(format);//将文档以xml格式输出
    XMLOut.output(doc,new FileOutputStream("D:/conser.xml"));
    is.close();
    }catch (Exception e1){
    e1.printStackTrace();}