// test 导出单行表头excel , 不建议使用。
 // 1 因为需要xml返回LinkedHashMap,
 // 2 xml查询的数据数量必须对应的上。
 @RequestMapping(params = "action=1")
 public void testExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
   // 单行表头导出用不到了
   String[] headers = {"ID", "用户名", "密码"};
   OutputStream out = this.getOut(response, "导出文件.xls");
   List<LinkedHashMap<String, Object>> result =
       commonService.selectList("Bill_SpecSql.tttttt", null);
   ExcelCreate.exportExcel("TestBiao", headers, result, out);
 }
 /**
  * 获得要导出的数据的总记录,如果 记录数大于6w则提示不能导出
  *
  * @param request
  * @param response
  */
 @RequestMapping(params = "action=canExport")
 public void canExport(HttpServletRequest request, HttpServletResponse response) {
   Map<String, String> param = this.getRequestParams(request);
   // 获取行数据
   List<Map<String, String>> resultLst = commonService.selectList(param.get("statement"), param);
   int count = resultLst.size();
   System.out.println(count);
   if (count > 60000) {
     this.printStr(response, "{\"success\": false}");
   } else {
     this.printStr(response, JsonUtil.writeValue(this.getMap()));
   }
 }
  // 多表头测试  OK 用这个
  @RequestMapping(params = "action=2")
  public void testExcel2(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    /*
    // 创建单元格样式
    HSSFCellStyle cellStyle = workbook.createCellStyle();
    // 指定单元格居中对齐
    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    // 指定单元格垂直居中对齐
    cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    // 指定当单元格内容显示不下时自动换行
    cellStyle.setWrapText(true);
    cellStyle.setFillForegroundColor(HSSFColor.GOLD.index);
    */

    /*
    //第一行的表头
           List<FieldForDTO> firstFieldList  = new ArrayList<FieldForDTO>();
           Map<Integer,List<FieldForDTO> > fieldMap = new HashMap<Integer,List<FieldForDTO> >();
     fieldMap.put(0, firstFieldList);
     		 //第二行的表头
     		 List<FieldForDTO> secondFieldList  = new ArrayList<FieldForDTO>();
     		 fieldMap.put(1, secondFieldList);
     		 firstFieldList.add(new FieldForDTO("id","这里是id",1,2,1));

     		 firstFieldList.add(new FieldForDTO(null,"合并的表头",2,1,4));

     		 secondFieldList.add(new FieldForDTO("billno","发票号","2",1));
     		 secondFieldList.add(new FieldForDTO("billtype","类型","2",2));
     		 secondFieldList.add(new FieldForDTO("receivebillname","收款人","2",3));
     		 secondFieldList.add(new FieldForDTO("realincomemoney","付款方式","2",4));
      */

    // 第一行的表头
    List<FieldForDTO> firstFieldList = new ArrayList<FieldForDTO>();
    // 第二行的表头
    List<FieldForDTO> secondFieldList = new ArrayList<FieldForDTO>();
    // 第三行的表头
    List<FieldForDTO> thirdFieldList = new ArrayList<FieldForDTO>();

    Map<Integer, List<FieldForDTO>> fieldMap = new HashMap<Integer, List<FieldForDTO>>();
    fieldMap.put(0, firstFieldList);
    fieldMap.put(1, secondFieldList);
    fieldMap.put(2, thirdFieldList);

    firstFieldList.add(new FieldForDTO("_PAYDATE", "缴纳年月", 1, 3, 1));
    firstFieldList.add(new FieldForDTO("_BATCHNO", "批次号", 2, 3, 1));
    firstFieldList.add(new FieldForDTO("_STAFFNAME", "员工姓名", 3, 3, 1));
    firstFieldList.add(new FieldForDTO("_STAFFCODE", "员工编码", 4, 3, 1));
    firstFieldList.add(new FieldForDTO("_MANAGECOM", "总/分公司", 5, 3, 1));
    firstFieldList.add(new FieldForDTO("_THRIDBRANCH", "三级机构", 6, 3, 1));
    firstFieldList.add(new FieldForDTO("_FOURTHBRANCH", "四级机构", 7, 3, 1));
    firstFieldList.add(new FieldForDTO("_DEPT", "部门", 8, 3, 1));
    firstFieldList.add(new FieldForDTO("_SUBJECT", "处/室", 9, 3, 1));
    firstFieldList.add(new FieldForDTO("_OCCLEVEL", "职级", 10, 3, 1));
    firstFieldList.add(new FieldForDTO("_STATIONNAME", "岗位名称", 11, 3, 1));
    firstFieldList.add(new FieldForDTO("_STATIONLINE", "岗位系列/条线", 12, 3, 1));
    firstFieldList.add(new FieldForDTO("_FBFLAG", "前/后线", 13, 3, 1));
    firstFieldList.add(new FieldForDTO("_KINDFLAG", "内勤/外勤", 14, 3, 1));

    firstFieldList.add(new FieldForDTO(null, "养老保险", 15, 1, 2));
    firstFieldList.add(new FieldForDTO(null, "医疗保险", 16, 1, 2));
    firstFieldList.add(new FieldForDTO(null, "失业保险", 17, 1, 2));
    firstFieldList.add(new FieldForDTO(null, "工伤保险", 18, 1, 1));
    firstFieldList.add(new FieldForDTO(null, "生育保险", 19, 1, 1));
    firstFieldList.add(new FieldForDTO(null, "公积金", 20, 1, 2));
    firstFieldList.add(new FieldForDTO(null, "其它", 21, 1, 2));

    firstFieldList.add(new FieldForDTO("_SOCIALSECAREA", "社保地区", 27, 3, 1));
    firstFieldList.add(new FieldForDTO("_PROVIDENTFUNDAREA", "公积金地区", 28, 3, 1));
    firstFieldList.add(new FieldForDTO("_SUMCOMPAY", "单位合计", 29, 3, 1));
    firstFieldList.add(new FieldForDTO("_SUMPERPAY", "个人合计", 30, 3, 1));
    firstFieldList.add(new FieldForDTO("_PROVIDENTFUNDACC", "公积金帐号", 31, 3, 1));

    secondFieldList.add(new FieldForDTO(null, "单位", "15", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "个人", "15", 2, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "单位", "16", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "个人", "16", 2, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "单位", "17", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "个人", "17", 2, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "单位", "18", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "单位", "19", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "单位", "20", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "个人", "20", 2, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "工本费", "21", 1, 1, 1));
    secondFieldList.add(new FieldForDTO(null, "服务费", "21", 2, 1, 1));
    // secondFieldList.add( new FieldForDTO(null, "单位", "15", 1, 1, 1));    第三个参数和第四个参数连起来
    thirdFieldList.add(new FieldForDTO("_SUMYANGLAOCOMPAY", "缴纳金额", "15-1", 1));
    thirdFieldList.add(new FieldForDTO("_SUMYANGLAOPERPAY", "缴纳金额", "15-2", 1));
    thirdFieldList.add(new FieldForDTO("_SUMYILIAOCOMPAY", "缴纳金额", "16-1", 1));
    thirdFieldList.add(new FieldForDTO("_SUMYILIAOPERPAY", "缴纳金额", "16-2", 1));
    thirdFieldList.add(new FieldForDTO("_SUMSHIYECOMPAY", "缴纳金额", "17-1", 1));
    thirdFieldList.add(new FieldForDTO("_SUMSHIYEPERPAY", "缴纳金额", "17-2", 1));
    thirdFieldList.add(new FieldForDTO("_SUMGONGSHANGCOMPAY", "缴纳金额", "18-1", 1));
    thirdFieldList.add(new FieldForDTO("_SUMSHENGYUCOMPAY", "缴纳金额", "19-1", 1));
    thirdFieldList.add(new FieldForDTO("_SUMGJJCOMPAY", "缴纳金额", "20-1", 1));
    thirdFieldList.add(new FieldForDTO("_SUMGJJPERPAY", "缴纳金额", "20-2", 1));
    thirdFieldList.add(new FieldForDTO("_COSTFEE", "缴纳金额", "21-1", 1));
    thirdFieldList.add(new FieldForDTO("_SERVICEFEE", "缴纳金额", "21-2", 1));

    OutputStream out = this.getOut(response, "多表头导出.xls");

    List<Map<String, String>> result = commonService.selectList("Bill_SpecSql.tttttt", null);
    ExcelCreate.printExcel("sheet页", out, fieldMap, result, null);
  }