java使用 freemarker 模板生成一個excel文件多個sheet

    /**
     * 導出Excel
     * @param request
     * @param
     * @return
     */
    @RequestMapping(value = "/jsp/map/導出.do", method = RequestMethod.POST)
    @ResponseBody
    public String  sxdcjgghbToExcel(HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam("zzdwdm") String zzdwdm,
            @RequestParam("outType") String outType) {
        try {
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8"); 
                //開始傳入數據
//               Map<String,Object> map = new HashMap<String,Object>();
                 //生成excel的簡單的類
                 XLSTransformer transformer = new XLSTransformer();
                 String modelExl = "";
                 //獲取模板路徑
                 modelExl = request.getSession().getServletContext().getRealPath("模板文件夾")+"\\"+xjzzdwqc;
                 //模板的本地地址
                 String templateFileName = "";
                 templateFileName = modelExl+"\\文件.xls";
                 //讀取進來
                 FileInputStream is = new FileInputStream(templateFileName); 
                 String excels = request.getSession().getServletContext().getRealPath("excels");
                 String destFileName = excels+"\\"+nh.get(0).getZzdwqc()+"文件夾\\";
                 File file = new File(excels+"\\"+nh.get(0).getZzdwqc()+"文件夾");
                 //判斷文件是否存在存在刪除用到公共方法
                 if (file.exists()) {
                     deleteAll(file);
                     file.mkdirs();
                 }else{
                     file.mkdirs();
                 }
                 //sheet表的名字
                 List<String> listSheetNames = new ArrayList<String>(); 
                 //加載數據
                 ArrayList<TdcbJyqQqTzdjXx_NH> t1 = new ArrayList<TdcbJyqQqTzdjXx_NH>();
                 for(int x = 0;x<nh.size();x++){
                     t1.add(nh.get(x));
                     //System.out.println(nh.get(x).getCbfXM()+nh.get(x).getCbfBH());
                     listSheetNames.add(nh.get(x).getCbfXM()+nh.get(x).getCbfBH());
                 }
                 //記得貌似沒用(待議)
//               map.put("nh", t1);
                 //固定格式 is-模板 t1-數據 listSheetNames-sheet表名字 nh-在文件取得別名nh.獲取  HashMap以map存儲
                 Workbook workbook = transformer.transformMultipleSheetsList(is, t1, listSheetNames, "nh", new HashMap(), 0);
                 HSSFSheet fromsheet = (HSSFSheet) workbook.getSheetAt(0);
                 //是否合併單元格
                /* for(int s=0;s<workbook.getNumberOfSheets();s++){
                     workbook.getSheetAt(s).setMargin(HSSFSheet.TopMargin,fromsheet.getMargin(HSSFSheet.TopMargin));
                     workbook.getSheetAt(s).setMargin(HSSFSheet.BottomMargin,fromsheet.getMargin(HSSFSheet.BottomMargin));
                     workbook.getSheetAt(s).setMargin(HSSFSheet.LeftMargin,fromsheet.getMargin(HSSFSheet.LeftMargin));
                     workbook.getSheetAt(s).setMargin(HSSFSheet.RightMargin,fromsheet.getMargin(HSSFSheet.RightMargin));
                     for(int w=0;w<8;w++){
                         workbook.getSheetAt(s).setColumnWidth(w,workbook.getSheetAt(0).getColumnWidth(w));
                     }
                 }*/
                 //輸出文件
                 OutputStream os = new BufferedOutputStream(new FileOutputStream(excels+"\\"+"文件夾\\"+"文件.xls")); 
                 workbook.write(os); 
                 os.flush(); 
                 os.close(); 
                 is.close();
                 //清除數據
//               map.remove("nh");
//               map.clear();

//               for(int i = 0;i<nh.size();i++){
//                  map.put("nh", nh.get(i));
//                  transformer.transformXLS(templateFileName, map, destFileName+nh.get(i).getCbfBH()+nh.get(i).getCbfXM()+".xls");
//                  map.remove("nh");
//               }

        } catch (Exception e) {
            e.printStackTrace();
            return "IoError";
        }

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章