`
blueyanghualong
  • 浏览: 221836 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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;
    }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics