java excel复杂表头导出

public void exportExcel(ManagerProjectBean bean,HttpServletResponse response, UserInfoBean userInfoBean){
    bean.setIsStatistics(1);
    String projectName = bean.getProjectName();
    if(StringUtils.isNotEmpty(projectName)){
        projectName = projectName.substring(0,projectName.length()-1);
        bean.setProjectName(projectName);
    }
    //1.创建一个workbook,对应一个excel文件
    HSSFWorkbook wb = new HSSFWorkbook();
    //2.在workbook中添加一个sheet,对应Excel中的sheet
    HSSFSheet sheet = wb.createSheet("年度新增工程统计");
    for(int i = 0; i < 30; i++){
        //设置每一列的列宽
        sheet.setColumnWidth(i,256*16);
    }
    //3.设置样式以及字体样式
    HSSFCellStyle titleStyle = ExcelUtils.createTitleCellStyle(wb);
    HSSFCellStyle headerStyle = ExcelUtils.createHeadCellStyle(wb);
    HSSFCellStyle contentStyle = ExcelUtils.createContentCellStyle(wb);
    //行号
    int rowNum = 0;
    //第1行
    HSSFRow row0 = sheet.createRow(rowNum++);
    row0.setHeight((short)600);
    String[] row_first = {"施工许可号","监督编号","工程名称","工程情况","","","","","","","","","","","","","","","","","形象进度","","","","","","","竣工验收日期","监督小组成员","备注"};
    for (int i = 0; i < row_first.length; i++) {
        HSSFCell tempCell1 = row0.createCell(i);
        tempCell1.setCellValue(row_first[i]);
        tempCell1.setCellStyle(headerStyle);
    }
    //第2行
    HSSFRow row1 = sheet.createRow(rowNum++);
    row1.setHeight((short)600);
    String[] row_second = {"","","","建筑类别","建筑子类别","监督面积(㎡)","工程造价(万元)","地上层次","地下层次","高度","工程报监日期","实际开工日期","建设单位","施工单位","监理单位","设计单位",
            "勘察单位","图审机构","检测机构","工程地址","桩基","深基坑","基础","主体","装饰","节能","幕墙","","",""};
    for (int i = 0; i < row_second.length; i++) {
        HSSFCell tempCell2 = row1.createCell(i);
        tempCell2.setCellValue(row_second[i]);
        tempCell2.setCellStyle(headerStyle);
    }

    // 合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
    sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));//
    sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));//工程名称
    sheet.addMergedRegion(new CellRangeAddress(0, 0, 2, 18));//工程情况
    sheet.addMergedRegion(new CellRangeAddress(0, 0, 19, 25));//形象进度
    sheet.addMergedRegion(new CellRangeAddress(0, 1, 26, 26));//竣工验收日期
    sheet.addMergedRegion(new CellRangeAddress(0, 1, 27, 27));//监督小组成员
    sheet.addMergedRegion(new CellRangeAddress(0, 1, 28, 28));//备注
    List<ManagerProjectBean> managerProjectList = managerProjectService.findManagerProjectList(bean, userInfoBean);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    if(null != managerProjectList){
        for(int i = 0; i < managerProjectList.size();i++){
            HSSFRow tempRow = sheet.createRow(i+2);
            tempRow.setHeight((short)600);
            //循环单元格填入数据
            for(int j=0;j<30;j++){
                HSSFCell tempCell = tempRow.createCell(j);
                tempCell.setCellStyle(contentStyle);
                String cellValue = "";
                if(j ==0){
                    cellValue = managerProjectList.get(i).getBuilderLicense();
                }else if(j == 1){
                    cellValue = managerProjectList.get(i).getProjectCode();
                }else if(j == 2){
                    cellValue = managerProjectList.get(i).getProjectName();
                }else if(j ==3){
                    cellValue = StringUtils.isNotEmpty(managerProjectList.get(i).getBuildType()) ?
                            DictUtils.getDictValue(managerProjectList.get(i).getBuildType(), "build_type", "") : "";
                }else if(j == 4){
                    cellValue = StringUtils.isNotEmpty(managerProjectList.get(i).getBuildChildType()) ?
                            DictUtils.getDictValue(managerProjectList.get(i).getBuildChildType(), "build_child_type", "") : "";
                }else if(j ==5){
                    cellValue = null != managerProjectList.get(i).getAllArea() ?  managerProjectList.get(i).getAllArea().toString() : "";
                }else if(j == 6){
                    cellValue = null != managerProjectList.get(i).getProjectCost() ? managerProjectList.get(i).getProjectCost().toString() : "";
                }else if(j == 7){
                    cellValue = managerProjectList.get(i).getFloorUp();
                }else if(j ==8){
                    cellValue = managerProjectList.get(i).getFloorDown();
                }else if(j == 9){
                    cellValue = StringUtils.isNotEmpty(managerProjectList.get(i).getBuildHeightStr()) ? managerProjectList.get(i).getBuildHeightStr() : "";
                }else if(j == 10){
                    cellValue = null != managerProjectList.get(i).getReportDate() ? sdf.format(managerProjectList.get(i).getReportDate()) : "";
                }else if(j == 11){
                    cellValue = null != managerProjectList.get(i).getBeginDate() ? sdf.format(managerProjectList.get(i).getBeginDate()) : "";
                }else if(j == 12){
                    cellValue = managerProjectList.get(i).getJsUnit();
                }else if( j == 13){
                    cellValue = managerProjectList.get(i).getSgUnit();
                }else if(j == 14){
                    cellValue = managerProjectList.get(i).getJlUnit();
                }else if(j ==15){
                    cellValue = managerProjectList.get(i).getSjUnit();
                }else if(j == 16){
                    cellValue = managerProjectList.get(i).getKcUnit();
                }else if(j == 17){
                    cellValue = managerProjectList.get(i).getTsUnit();
                }else if(j == 18){
                    cellValue = managerProjectList.get(i).getJcUnit();
                }else if(j == 19){
                    cellValue = managerProjectList.get(i).getAddress();
                }else if(j == 20){
                    cellValue = managerProjectList.get(i).getZj();
                }else if(j == 21){
                    cellValue = managerProjectList.get(i).getSjk();
                }else if(j == 22){
                    cellValue = managerProjectList.get(i).getJc();
                }else if(j == 23){
                    cellValue = managerProjectList.get(i).getZt();
                }else if(j == 24){
                    cellValue = managerProjectList.get(i).getZs();
                }else if(j == 25){
                    cellValue = managerProjectList.get(i).getJn();
                }else if(j == 26){
                    cellValue = managerProjectList.get(i).getMq();
                }else if(j == 27){
                    cellValue = null != managerProjectList.get(i).getEndDate() ? sdf.format(managerProjectList.get(i).getEndDate()) : "";
                }else if(j == 28){
                    cellValue = managerProjectList.get(i).getMonitorZl();
                }else if(j == 29){
                    cellValue = managerProjectList.get(i).getRemark();
                }
                tempCell.setCellValue(cellValue);
            }
        }
    }

    String fileName = "年度新增工程统计.xls";
    try {
        fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
        response.setHeader("Content-disposition", "attachment;filename=\"" + fileName + "\"");
        OutputStream stream = response.getOutputStream();
        if(null != wb && null != stream){
            wb.write(stream);
            wb.close();
            stream.close();
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值