POI在一个excel中动态生成多个sheet工作薄

时间:2025-03-10 11:05:26

public void downLoadDept( HttpServletResponse response) throws Exception{

   PageData pd = new PageData();//创建对象
   List taskList =(List) ("",pd);//获取所有主任务

   String title = "机构信息";//标题
   String[] titleList = new String[]{"部门编号", "部门名称", "所属部门编号", "品类", "if36", "ifup","备注"};//表头数组
   String[] titleColumnList = new String[]{"DEPT_CODE", "DEPT_NAME", "PID", "INDUSTRY_ID","IF_BIGCITY", "", "REMARK"};//字段数据
   int cellNumber = ;//表头长度


   //创建webbook对象
   HSSFWorkbook wb = new HSSFWorkbook();
   //动态创建多个sheet
   for (int i= 0; i

       String taskName = (i).get("NAME").toString(); //获取主任务名称
       String taskid = (i).get("ID").toString();//获取主任务id
       ("TASK_ID",taskid);//将主任务id,存入对象中
       //根据主任务id,获取部门信息
       List deptList = (List)("",pd);

       //创建sheet
       HSSFSheet sheet = ();
       //设置sheet名称
       (i,taskName);
       //获取sheet
       HSSFSheet sheetinput = (i);
       //在sheet第1行中添加表头
       HSSFRow headerRow = ((short) 0);
       //设置单元格样式
       HSSFCellStyle style = getExcelStyle(wb);
       //创建表头单元格
       HSSFCell headerCell = null;
       //遍历表头
       for (int k = 0; k < cellNumber; k++) {
           headerCell = ((short) k); //单元格titleList[k]
           (titleList[k]);//给单元格赋值
           (style);//单元格样式
           ((short) k, (short) 5766); //设置单元格宽度
       }

       //循环遍历数据,存入excel中
       for (int v = 0; v < ();v++) {

           PageData single = (v);

           HSSFRow dataRow = ((short) v + 1);//创建行
           HSSFCell contentCell = null;//创建单元格
           for (int j = 0; j < cellNumber ; j++) {
               String TABLE_COLUMN = titleColumnList[j];
               String VALUE = "";
               //判断map中是否存在key,并且判断key的值是否为空
               if((TABLE_COLUMN) && (TABLE_COLUMN) != null && !(TABLE_COLUMN).toString().equals("")){
                    if(TABLE_COLUMN.equals("IF_BIGCITY")){

                        VALUE = (TABLE_COLUMN).toString().equals("1")? "是":"否";

                    }else if(TABLE_COLUMN.equals("INDUSTRY_ID") && ("INDUSTRY_ID") != null && (!("INDUSTRY_ID").equals(""))){

                            String INDUSTRY_IDS = ("INDUSTRY_ID").toString();//获取品类id字符串
                            List ids = new ArrayList();//创建list对象
                            String[] arr = INDUSTRY_IDS.split(",");//将字符串转化成数组
                            for (int s = 0; s < ; s++) {//遍历数组,将数据放入到对象中
                                (arr[s]);
                            }
                            pd = new PageData();
                            ("ids", ids);//将list放入map中
                            //根据品类id,获取到品类名称
                            List listName = (List) ("", pd);
                            String name = "";
                            for(int n=0;n
                                name +=(n).get("INDUSTRY_NAME")+",";
                            }
                            if(()>0){
                                name = (0,()-1);
                            }
                            VALUE = name;
                    }else{

                        VALUE = (TABLE_COLUMN).toString();
                    }
               }
               contentCell = ((short)j);//单元格
               (VALUE);//单元格赋值
           }
           (style);//行添加样式
       }
   }
   //浏览器下载
   OutputStream os=null;
   try {
       os = ();// 取得输出流
       ();// 清空输出流
       ("Content-disposition", "attachment; filename=" + new String((title+".xls").getBytes("UTF-8"), "ISO8859-1"));
       ("text/html;charset=UTF-8");
       ("application/x-excel");
       (os);
       ();
   } catch (IOException e) {
       ();
   }finally {
       try {
           ();
       } catch (IOException e) {
           ();
       }
   }

}

public static HSSFCellStyle getExcelStyle(HSSFWorkbook wb) {
    HSSFCellStyle style = ();
    (HSSFCellStyle.ALIGN_CENTER);//水平居中
    HSSFFont font = ();
    ();//字体颜色
    ((short) 12);//字体大小
    ("宋体");//字体
    (font);
    (true);//自动换行
    return style;
}