使用poi自定义导出数据

 /**
  4      * excel自定义导出
  5      * @param hAqscTieupsummary
  6      * @param request
  7      * @param response
  8      * @param dataGrid
  9      * @param modelMap
 10      * @return
 11      */
    @SuppressWarnings("deprecation")
     @RequestMapping(params = "exportEXL")
     public String exportEXL(HAqscTieupsummaryEntity hAqscTieupsummary,
             HttpServletRequest request, HttpServletResponse response,
             DataGrid dataGrid, ModelMap modelMap) {
         try {
             String dateType = "yyyy";
             SimpleDateFormat df = new SimpleDateFormat(dateType);// 设置日期格式
             SimpleDateFormat df1 = new SimpleDateFormat("yyyy.MM.dd");// 设置日期格式
             // 创建HSSFWorkbook对象(excel的文档对象)
             HSSFWorkbook wb = new HSSFWorkbook();
             HSSFRow row = null;
             HSSFCell cell = null;
             // 建立新的sheet对象(excel的表单) 并设置sheet名字
             HSSFSheet sheet = wb.createSheet("占压管线台账信息");
             sheet.setDefaultRowHeightInPoints(30);// 设置缺省列高sheet.setDefaultColumnWidth(20);//设置缺省列宽
             //----------------标题样式---------------------
             HSSFCellStyle titleStyle = wb.createCellStyle();        //标题样式
             titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
             titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
             Font ztFont = wb.createFont();   
             ztFont.setItalic(false);                     // 设置字体为斜体字   
             ztFont.setColor(Font.COLOR_NORMAL);            // 将字体设置为“红色”   
             ztFont.setFontHeightInPoints((short)16);    // 将字体大小设置为18px   
             ztFont.setFontName("宋体");             // 将“宋体”字体应用到当前单元格上  
             ztFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗
 //             ztFont.setUnderline(Font.U_DOUBLE);         // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)   
 //              ztFont.setStrikeout(true);                  // 是否添加删除线   
              titleStyle.setFont(ztFont); 
             //-------------------------------------------
              //----------------二级标题格样式----------------------------------
              HSSFCellStyle titleStyle2 = wb.createCellStyle();        //表格样式
              titleStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
              titleStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
              Font ztFont2 = wb.createFont();   
              ztFont2.setItalic(false);                     // 设置字体为斜体字   
              ztFont2.setColor(Font.COLOR_NORMAL);            // 将字体设置为“红色”   
              ztFont2.setFontHeightInPoints((short)11);    // 将字体大小设置为18px   
              ztFont2.setFontName("宋体");             // 字体应用到当前单元格上   
              ztFont2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗
 //                 ztFont.setUnderline(Font.U_DOUBLE);         // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)   
 //                  ztFont.setStrikeout(true);                  // 是否添加删除线   
              titleStyle2.setFont(ztFont2);
             //----------------------------------------------------------
             //----------------单元格样式----------------------------------
             HSSFCellStyle cellStyle = wb.createCellStyle();        //表格样式
             cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
             cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
             cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框    
             cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框    
             cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框    
             cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
             Font cellFont = wb.createFont();   
             cellFont.setItalic(false);                     // 设置字体为斜体字   
             cellFont.setColor(Font.COLOR_NORMAL);            // 将字体设置为“红色”   
             cellFont.setFontHeightInPoints((short)10);    // 将字体大小设置为18px   
             cellFont.setFontName("宋体");             // 字体应用到当前单元格上   
 //            cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
             cellStyle.setFont(cellFont);
             cellStyle.setWrapText(true);//设置自动换行
             //----------------------------------------------------------
             // ----------------------创建第一行---------------
             // 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
             row = sheet.createRow(0);
             // 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
             cell = row.createCell(0);
             // 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
             sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 19));
             // 设置单元格内容
             cell.setCellValue("占压城市地下管线、输油气管道、化工产品管道违法违规建设汇总表");
             cell.setCellStyle(titleStyle);
             // ----------------------------------------------
 
             // ------------------创建第二行(单位、填表日期)---------------------
             row = sheet.createRow(1); // 创建第二行
             cell = row.createCell(0);
             cell.setCellValue("填报单位名称(盖章): ");
             cell.setCellStyle(titleStyle2);
             sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 3));
             cell = row.createCell(4);
             sheet.addMergedRegion(new CellRangeAddress(1, 1, 4, 5));
             TSBaseUser tb = ResourceUtil.getSessionUserName();    //获取当前登录用户信息
             String uid = tb.getId();
             String deptId = userDao.getDeptId(uid);
             String deptName = userDao.getDeptName(deptId);
             cell.setCellValue(deptName);
 //            cell.setCellValue("*****");
             cell.setCellStyle(titleStyle2);
             cell = row.createCell(13); // 填表时间
             sheet.addMergedRegion(new CellRangeAddress(1, 1, 13, 16));
             cell.setCellValue("填表时间:"+df1.format(new Date()));
             cell.setCellStyle(titleStyle2);
 //            HSSFCell cell14 = row.createCell(15); // 填表时间
 //            cell14.setCellValue();
 //            cell14.setCellValue("2017.11.30");
 //            cell14.setCellStyle(titleStyle2);
             // ----------------------------------------------
 
             // ------------------创建表头start---------------------
             row = sheet.createRow(2); // 创建第三行
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
             cell = row.createCell(0);
             cell.setCellValue("序号");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 1, 1));
             cell = row.createCell(1);
             cell.setCellValue("隐患等级评定");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 2, 2));
             cell = row.createCell(2);
             cell.setCellValue("隐患名称");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 5));
             cell = row.createCell(3);
            cell.setCellValue("位置描述");
             cell.setCellStyle(cellStyle);
             
             cell = row.createCell(4);
            cell.setCellStyle(cellStyle);
            cell = row.createCell(5);
            cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 2, 6, 10));
             cell = row.createCell(6);
            cell.setCellValue("管线情况");
             cell.setCellStyle(cellStyle);
            
             cell = row.createCell(7);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(8);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(9);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(10);
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 2, 11, 13));
             cell = row.createCell(11);
             cell.setCellValue("占压物情况");
            cell.setCellStyle(cellStyle);
             
             cell = row.createCell(12);
            cell.setCellStyle(cellStyle);
             cell = row.createCell(13);
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 2, 14, 14));
             cell = row.createCell(14);
             cell.setCellValue("占压物用途");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 15, 15));
             cell = row.createCell(15);
             cell.setCellValue("已采用的安全防护措施");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 16, 16));
             cell = row.createCell(16);
             cell.setCellValue("备注");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 17, 17));
             cell = row.createCell(17);
             cell.setCellValue("联系人电话");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 18, 18));
             cell = row.createCell(18);
             cell.setCellValue("是否已和区管委和供热办联系");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(2, 3, 19, 19));
             cell = row.createCell(19);
             cell.setCellValue("是否采取防范措施");
             cell.setCellStyle(cellStyle);
             
             //--------------------------- 创建第四行--------------------
             row = sheet.createRow(3); 
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 3));
             cell = row.createCell(3);
             cell.setCellValue("所在区县");
             cell.setCellStyle(cellStyle);
             
             cell = row.createCell(0);
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4));
             cell = row.createCell(4);
             cell.setCellValue("所在街道");
             cell.setCellStyle(cellStyle);
             
             cell = row.createCell(1);
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 5, 5));
             cell = row.createCell(5);
             cell.setCellValue("详细地址");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 6, 6));
             cell = row.createCell(6);
             cell.setCellValue("管线建成时间");
             cell.setCellStyle(cellStyle);

             sheet.addMergedRegion(new CellRangeAddress(3, 3, 7, 7));
             cell = row.createCell(7);
             cell.setCellValue("管线埋深");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 8, 8));
             cell = row.createCell(8);
             cell.setCellValue("管径");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 9, 9));
             cell = row.createCell(9);
             cell.setCellValue("管线压力等级");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 10, 10));
             cell = row.createCell(10);
             cell.setCellValue("占压管线长度");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 11, 11));
             cell = row.createCell(11);
             cell.setCellValue("占压单位(个人)名称");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 12, 12));
             cell = row.createCell(12);
             cell.setCellValue("占压物建成时间");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 13, 13));
             cell = row.createCell(13);
             cell.setCellValue("占压物面积(平方米)");
             cell.setCellStyle(cellStyle);
             
             sheet.addMergedRegion(new CellRangeAddress(3, 3, 14, 14));
             cell = row.createCell(14);
             cell.setCellValue("经营、出租、自用、居住");
             cell.setCellStyle(cellStyle);
             
             cell = row.createCell(15);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(16);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(17);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(18);
             cell.setCellStyle(cellStyle);
             cell = row.createCell(19);
             cell.setCellStyle(cellStyle);
             //-------------------------表头end---------------------
             CriteriaQuery cq = new CriteriaQuery(HAqscTieupsummaryEntity.class,
                     dataGrid);
             org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,
                     hAqscTieupsummary, request.getParameterMap());
             List<HAqscTieupsummaryEntity> hAqscTieupsummarys = this.hAqscTieupsummaryService
                     .getListByCriteriaQuery(cq, false);
             for (int i = 0; i < hAqscTieupsummarys.size(); i++) {    //向表格插入数据
                 List<Object> data = new ArrayList<>();        //将前台传来的数据存入到list中
 //                System.out.println(hAqscTieupsummarys.get(i).getSeqNum());
                 HAqscTieupsummaryEntity entity = hAqscTieupsummarys.get(i);
                 data.add(entity.getSeqNum());
                 String yhjb = entity.getYhDjpd();
                 String hyjb =  dao.getHyjb(yhjb);    
                 data.add(hyjb);    //隐患级别
                 data.add(entity.getYhName());
                 String countryName = dao.getCountryByCode(entity.getAtcounty());    //区县
                 data.add(countryName);
                 String code = entity.getAtdistrict();
                 String streetName = dao.getStreetByCode(code);    //街道
                 data.add(streetName);
                 data.add(entity.getAddress());
                 Date buildtime = entity.getPipelineBuildtime();
                 if (buildtime!=null) {
                     String format = df.format(buildtime);
                     data.add(format);
                 }else{
                     data.add("");
                 }
                 data.add(entity.getPipelineDepth());
                 data.add(entity.getPipeSize());
                 data.add(entity.getPipelinePr());
                 data.add(entity.getTppipelineLength());
                 data.add(entity.getTieupName());
                 Date goodsBuildtime = entity.getTieupgoodsBuildtime();
                 if (buildtime!=null) {
                     String format = df.format(goodsBuildtime);
                     data.add(format);
                 }else{
                     data.add("");
                 }
                 data.add(entity.getTieupgoodsArea());
                 String useType = entity.getTieupgoodsUse();
                 data.add(dao.getUseType(useType));
                 data.add(entity.getUseSecuritymeasures());
                 data.add(entity.getRemark());
                 data.add(entity.getTelephone());
                 data.add(dao.getIsContact(entity.getIsContact()));
                 data.add(entity.getIsUsesecuritymeasures());
                 int rowNum = 4+i;    //从第四行开始
                 row = sheet.createRow(rowNum); 
                 for (int j = 0; j < data.size(); j++) {        //将数据添加到单元格中    
 //                    System.out.println(data.get(j));
                     sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, j, j));
                     cell = row.createCell(j);
                     cell.setCellValue(""+data.get(j)+"");
                     cell.setCellStyle(cellStyle);
                 }
             }
 
             // 输出Excel文件
             OutputStream output = response.getOutputStream();
             response.reset();
             response.setHeader("Content-disposition",
                     "attachment; filename=details.xls");    //filename =  文件名
             response.setContentType("application/msexcel");
             wb.write(output);
             output.close();
         } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
         return null;
     }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值