• poi导出excel合并单元格(包括列合并、行合并)


    1 工程所需jar包如下:
    commons-codec-1.5.jar
    commons-logging-1.1.jar
    log4j-1.2.13.jar
    junit-3.8.1.jar
    poi-3.9-20121203.jar

    2 Code:

    /** 
     * 导出设备信息Excel 
     * @param form      和 HTTP 请求相关的表格对象 
     * @param resources 信息资源对象 
     * @param locale    本地化对象 
     * @param session   HTTP 会话对象 
     * @param request   HTTP 请求对象 
     * @param response  HTTP 响应对象 
     * @return 
     */  
    public String exportExcel(DynaBean form, MessageResources resources,  
            Locale locale, HttpSession session, HttpServletRequest request,  
            HttpServletResponse response) throws Exception{  
        int iLanguage = (locale.getLanguage().indexOf("en")>=0)?0:1;  
        response.reset();  
        response.setContentType("application/vnd.ms-excel");  
        response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(resources.getMessage(locale, "device.details")+".xls","UTF-8"));  
        OutputStream sos = response.getOutputStream();  
        List<DeviceVO> deviceList = dao.getAllDevice();  
        HSSFWorkbook wb = new HSSFWorkbook();  
        Map<String, CellStyle> styles = createStyles(wb);  
        // 创建sheet页  
        Sheet sheet = wb.createSheet("Sheet");  
        PrintSetup printSetup = sheet.getPrintSetup();  
        printSetup.setLandscape(true);  
        sheet.setFitToPage(true);  
        sheet.setHorizontallyCenter(true);  
        /** 
        *合并单元格的行或者列 
        */  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$F$1:$H$1"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$M$1:$P$1"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$Q$1:$S$1"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$A$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$B$1:$B$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$C$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$D$1:$D$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$E$1:$E$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$I$1:$I$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$J$1:$J$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$K$1:$K$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$L$1:$L$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$T$1:$T$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$U$1:$U$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$V$1:$V$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$W$1:$W$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$X$1:$X$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$Y$1:$Y$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$Z$1:$Z$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$AA$1:$AA$2"));  
        sheet.addMergedRegion(CellRangeAddress.valueOf("$AB$1:$AB$2"));  
          
      
          
        // 创建表头  
        Row headerRow = sheet.createRow(0);  
        headerRow.setHeightInPoints(30);  
        Cell headerCell;  
          
        headerCell = headerRow.createCell(0);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.number")); //设备编号  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(1);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.qrcode")); //设备二维码  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(2);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.customerbase")); //客户群  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(3);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.customertype")); //客户类别  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(4);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.customername")); //客户名称  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(5);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.area")); //设备区域  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(8);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.itemname")); //所属项目名称  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(9);  
        headerCell.setCellValue(resources.getMessage(locale, "device.category")); //设备类别  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(10);  
        headerCell.setCellValue(resources.getMessage(locale, "device.name")); //设备名称  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(11);  
        headerCell.setCellValue(resources.getMessage(locale, "device.no")); //设备信息编号  
        headerCell.setCellStyle(styles.get("header"));  
      
        headerCell = headerRow.createCell(12);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.baseinfomation")); //设备基本信息  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(16);  
        headerCell.setCellValue(resources.getMessage(locale, "device.location")); //设备位置  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(19);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.enabledate")); //设备启用日期  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(20);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.backendload")); //后端负载  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(21);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.operationtips")); //操作提示  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(22);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.maintenancepeople")); //维护责任人  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(23);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.usetime")); //巡检时间  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(24);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.intervaltime")); //巡检下台设备时间间隔  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(25);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.patrolpath")); //巡检路径  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(26);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.enable")); //是否启用巡检路径  
        headerCell.setCellStyle(styles.get("header"));  
          
        headerCell = headerRow.createCell(27);  
        headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.other")); //其他信息  
        headerCell.setCellStyle(styles.get("header"));  
          
          
        Row headerRowRegion = sheet.createRow(1);  
        headerRowRegion.setHeightInPoints(15);  
        Cell headerCellRegion;  
        headerCellRegion = headerRowRegion.createCell(5);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.province")); //省份  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(6);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.region")); //市  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(7);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.county")); //县/区  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(12);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.brand")); //品牌  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(13);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.model")); //型号  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(14);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.capacity")); //容量  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(15);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.systemtype")); //系统类型  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(16);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.build")); //楼号  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(17);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.floor")); //楼层  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        headerCellRegion = headerRowRegion.createCell(18);  
        headerCellRegion.setCellValue(resources.getMessage(locale, "device.room")); //房间号  
        headerCellRegion.setCellStyle(styles.get("header"));  
          
        for(int i=0;i<deviceList.size();i++){  
            DeviceVO device = deviceList.get(i);  
            Cell rowCell;  
            Row cellRow = sheet.createRow(i + 2);  
              
            rowCell = cellRow.createCell(0);  
            rowCell.setCellValue(device.getDeviceId());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(1);  
            rowCell.setCellValue(device.getQrcode());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(2);  
            //判断是否是中文  
            if(iLanguage==1){  
                rowCell.setCellValue(device.getItemId().getCustomerBase().substring(device.getItemId().getCustomerBase().indexOf(":")+1,device.getItemId().getCustomerBase().length()));  
            }else if(iLanguage==0){ //判断是否是英文  
                rowCell.setCellValue(device.getItemId().getCustomerBase().substring(0,device.getItemId().getCustomerBase().indexOf(":")));  
            }  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(3);  
            //判断是否是中文  
            if(iLanguage==1){  
                rowCell.setCellValue(device.getItemId().getCustomerType().substring(device.getItemId().getCustomerType().indexOf(":")+1,device.getItemId().getCustomerType().length()));  
            }else if(iLanguage==0){ //判断是否是英文  
                rowCell.setCellValue(device.getItemId().getCustomerType().substring(0,device.getItemId().getCustomerType().indexOf(":")));  
            }  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(4);  
            rowCell.setCellValue(device.getItemId().getCustomerName());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(5);  
            rowCell.setCellValue(device.getItemId().getProvince());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(6);  
            rowCell.setCellValue(device.getItemId().getCity());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(7);  
            rowCell.setCellValue(device.getItemId().getCounty());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(8);  
            //判断是否是中文  
            if(iLanguage==1){  
                rowCell.setCellValue(device.getItemId().getItemName());  
            }else if(iLanguage==0){ //判断是否是英文  
                rowCell.setCellValue(device.getItemId().getForShort());  
            }  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(9);  
            //判断是否是中文  
            if(iLanguage==1){  
                rowCell.setCellValue(device.getZequipId().getZequipGroup().getNameLoc());  
            }else if(iLanguage==0){ //判断是否是英文  
                rowCell.setCellValue(device.getZequipId().getZequipGroup().getNameEn());  
            }  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(10);  
            rowCell.setCellValue(device.getDeviceName());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(11);  
            rowCell.setCellValue(device.getDeviceNo());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(12);  
            rowCell.setCellValue(device.getDeviceBrand());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(13);  
            rowCell.setCellValue(device.getEquipDriveId().getModel());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(14);  
            rowCell.setCellValue(device.getDeviceCapacity());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(15);  
            rowCell.setCellValue(device.getSystemType());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(16);  
            rowCell.setCellValue(device.getStairsNo());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(17);  
            rowCell.setCellValue(device.getFloor());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(18);  
            rowCell.setCellValue(device.getRoomNo());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(19);  
            rowCell.setCellValue(device.getEnableDate()!=null ? new SimpleDateFormat("yyyy-MM-dd").format(device.getEnableDate()) : "");  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(20);  
            rowCell.setCellValue(device.getBackendLoad());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(21);  
            rowCell.setCellValue(device.getOperationTips());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(22);  
            rowCell.setCellValue(device.getPersonId().getUserName());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(23);  
            rowCell.setCellValue(device.getInspecTime()+resources.getMessage(locale, "device.export.excel.minute"));  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(24);  
            rowCell.setCellValue(device.getIntervalTime()+resources.getMessage(locale, "device.export.excel.minute"));  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(25);  
            rowCell.setCellValue(device.getDevicePath());  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(26);  
            rowCell.setCellValue(device.getValidityNr() == 0 ? resources.getMessage(locale, "mmc.soft.person.disabled") : resources.getMessage(locale, "mmc.soft.person.enable"));  
            rowCell.setCellStyle(styles.get("cell"));  
              
            rowCell = cellRow.createCell(27);  
            rowCell.setCellValue(device.getOtherInfo() != null ? device.getOtherInfo() : "");  
            rowCell.setCellStyle(styles.get("cell"));  
        }  
        wb.write(sos);  
        sos.flush();  
        sos.close();  
        return null;  
    }  
      
    //excel样式  
    private Map<String, CellStyle> createStyles(Workbook wb)  
    {  
        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();  
        CellStyle style;  
        Font titleFont = wb.createFont();  
        titleFont.setFontHeightInPoints((short) 18);  
        titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);  
        style = wb.createCellStyle();  
        style.setAlignment(CellStyle.ALIGN_CENTER);  
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  
        style.setFont(titleFont);  
        styles.put("title", style);  
      
        style = wb.createCellStyle();  
        style.setAlignment(CellStyle.ALIGN_CENTER);  
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  
        style.setWrapText(true);  
        styles.put("header", style);  
      
        style = wb.createCellStyle();  
        style.setAlignment(CellStyle.ALIGN_CENTER);  
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  
        style.setWrapText(true);  
        styles.put("cell", style);  
      
        style = wb.createCellStyle();  
        style.setAlignment(CellStyle.ALIGN_CENTER);  
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  
        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());  
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);  
        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));  
        styles.put("formula", style);  
      
        style = wb.createCellStyle();  
        style.setAlignment(CellStyle.ALIGN_CENTER);  
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  
        style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());  
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);  
        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));  
        styles.put("formula_2", style);  
      
        return styles;  
    }  
    

      

  • 相关阅读:
    玩转git分支
    python元组、列表的异同总结
    IOS推送通知測试工具PushMeBaby
    Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
    Jmeter变量参数化及函数应用
    在Jmeter中使用自定义编写的Java测试代码
    使用LoadRunner监控Apache的步骤 (转)
    mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
    Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
    JVM调优总结-调优方法
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/7813091.html
Copyright © 2020-2023  润新知