poi导出 合并单元格

/**
     * 导出并合并单元格
     * 2011-11-7
     * @param list
     * @param fields
     * @param values
     * @param sheetName
     * @return
     * HSSFWorkbook
     * Yang,Hualong
     */
    public static HSSFWorkbook GenerateExcelAndMerged( List<HashMap<String,Object>> list,
            String[] fields, String[] values,String sheetName) {
        String flag = "false"; // 设置开关
        try {
            HSSFWorkbook wb = new HSSFWorkbook(); // 声明一个工作薄
            HSSFSheet sheet = wb.createSheet(sheetName);// 声明一个表

            HSSFRow row = null; // 声明行
            HSSFCell cell = null;// 声明单元

            // 创建表头,第一行为0
            row = sheet.createRow(0);
            for (int i = 0; i < values.length; i++) {
                cell = row.createCell(i); // 创建标题
                cell.setCellValue(values[i]);// 写入标题
            }
            Map<String, Object> map = null;
            // 写入标题和内容
            for (int rowindex = 0; rowindex < list.size(); rowindex++) {
                row = sheet.createRow(rowindex + 1); // 从第二行开始
                map = list.get(rowindex); // 集合数据写入对象
                //出来第一列
                  for (int i = 0; i < fields.length; i++) {
                      Object value=map.get(fields[i]);//0 1 2 3
                        cell = row.createCell(i);// 创建内容
                        if (map.get(fields[i]) instanceof Double) {
                            if(Double.parseDouble(String.valueOf(map.get(fields[i])))==-1d){
                                cell.setCellValue("----");
                            }else{
                            Double f = Math.round(Double.parseDouble(map.get(
                                    fields[i]).toString()) * 100) / 100.0;
                            cell.setCellValue(f + "%");
                            }
                        } else if (map.get(fields[i]) instanceof Date) {
                            Date date = (Date) map.get(fields[i]);
                            SimpleDateFormat sdf = new SimpleDateFormat(
                                    "yyyy-MM-dd");
                            cell.setCellValue(String.valueOf(sdf.format(date)));
                        } else {
                            cell.setCellValue(String.valueOf(map.get(fields[i]))); // 设置单元格的值
                        }
                        //判断当前值是否与其 上一行同一列的值相同,相同则合并
                         if(rowindex>0 && value.equals(sheet.getRow(rowindex).getCell(i).getStringCellValue())){
                                sheet.addMergedRegion(new CellRangeAddress(rowindex, rowindex+1, 0, 0));
                          }
                    }
            }
            return  wb;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值