当前位置: 代码迷 >> J2EE >> 在写一个exl的时候内存溢出怎么处理,请帮忙看看吧
  详细解决方案

在写一个exl的时候内存溢出怎么处理,请帮忙看看吧

热度:60   发布时间:2016-04-22 00:50:20.0
在写一个exl的时候内存溢出怎么办,请帮忙看看吧,
Java code
FileOutputStream fos = new FileOutputStream(file);        // 创建一个Excel文件对象        HSSFWorkbook wb = new HSSFWorkbook();        // 在文件对象上建立一个sheet,并命名为cliff        HSSFSheet s = wb.createSheet();            s.setColumnWidth((short) 0, (short) 6000);        s.setColumnWidth((short) 1, (short) 6000);        s.setColumnWidth((short) 2, (short) 6000);        s.setColumnWidth((short) 3, (short) 6000);        s.setColumnWidth((short) 4, (short) 6000);                // HSSFSheet s2=wb.createSheet();        wb.setSheetName(0, "统计菜单");        s.createRow(0).createCell((short) 0).setCellValue("1");        s.createRow(0).createCell((short) 1).setCellValue("2");        s.createRow(0).createCell((short) 2).setCellValue("3");        s.createRow(0).createCell((short) 3).setCellValue("4");        s.createRow(0).createCell((short) 4).setCellValue("5");                // 在sheet上输入数据        list = enterProceduralService.getEnterProcedural(enterProcedural);        for (short i = 1; i < list.size() + 1; i++) {            HSSFRow row = s.createRow(i);            row.createCell((short) 0).setCellValue(                    list.get(i - 1).getMacId());            row.createCell((short) 1).setCellValue(                    list.get(i - 1).getStoreName());            row.createCell((short) 2).setCellValue(                    list.get(i - 1).getPadInfoId());                        row.createCell((short) 3).setCellValue(                    new DateUtils().cal(new Long(list.get(i - 1)                            .getAdvTime()), ""));            row.createCell((short) 4).setCellValue(                    new Long(list.get(i - 1).getAdvTime()) / 1000);                        }        list = enterProceduralService.getAllEnterProcedural(enterProcedural);        for (int i = 1; i < (list.size()-1)/60000 +2; i++) {                         HSSFSheet s2 = wb.createSheet("详情"+i);            s2.setColumnWidth((short) 0, (short) 6000);            s2.setColumnWidth((short) 1, (short) 6000);            s2.setColumnWidth((short) 2, (short) 6000);            s2.setColumnWidth((short) 3, (short) 6000);            s2.setColumnWidth((short) 4, (short) 6000);            s2.createRow(0).createCell((short) 0).setCellValue("1");            s2.createRow(0).createCell((short) 1).setCellValue("2");            s2.createRow(0).createCell((short) 2).setCellValue("3");            s2.createRow(0).createCell((short) 3).setCellValue("4");            s2.createRow(0).createCell((short) 4).setCellValue("5");            for (int j = i==1? i: (i-1)*60000+1 ; j <= (list.size()>=i*60000 ? i*60000+1 : list.size()) ; j++) {                HSSFRow row = null ;               if(i==1)                   row = s2.createRow(j);               else                   row = s2.createRow(j-(i-1)*60000);                row.createCell((short) 0).setCellValue(                        list.get(j - 1).getMacId());                row.createCell((short) 1).setCellValue(                        list.get(j - 1).getStoreName());                row.createCell((short) 2).setCellValue(                        new SimpleDateFormat("yyyy-MM-dd kk:mm:ss").format(                        list.get(j - 1).getCreateDate()));                row.createCell((short) 3).setCellValue(                        list.get(j - 1).getApkName());                if(list.get(j - 1).getUseTime()!=null)                row.createCell((short) 4).setCellValue(                        list.get(j - 1).getUseTime()/1000);                else                    row.createCell((short) 4).setCellValue(                            "");                }                                 }                String str = "";        if(enterProcedural!=null&&enterProcedural.getStartTime()!=null&&enterProcedural.getEndTime()!=null){            str=new SimpleDateFormat("yyyy-MM-dd").format(                    enterProcedural.getStartTime()) +"—"+ new SimpleDateFormat("yyyy-MM-dd").format(                            enterProcedural.getEndTime());        }        wb.write(fos);//内存溢出 求看看
  相关解决方案