登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

意境天南

心无贪欲,净土则生

 
 
 

日志

 
 

POI 导出Excel合并相同单元格并居中  

2011-07-16 18:39:35|  分类: 原创 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
I注:我这里合并的是列的相同单元格,图片效果如下:POI 导出Excel合并相同单元格并居中 - 意境天南 - 意境天南
 POI合并单元格的方法是addMergedRegion();

/**  
     * 合并单元格  
     * @param sheet 要合并单元格的excel 的sheet
     * @param cellLine  要合并的列  
     * @param startRow  要合并列的开始行  
     * @param endRow    要合并列的结束行  
     */  
    private static void addMergedRegion(HSSFSheet sheet, int cellLine, int startRow, int endRow,HSSFWorkbook workBook){   
           
    HSSFCellStyle style = workBook.createCellStyle(); // 样式对象    
    
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直    
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平    
        //获取第一行的数据,以便后面进行比较    
        String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();   
     
        int count = 0;
        boolean flag = false;
        for (int i = 1; i <= endRow; i++) {   
        String s_current = sheet.getRow(i).getCell(0).getStringCellValue(); 
        if(s_will.equals(s_current))
        {
        s_will = s_current;
        if(flag)
        {
        sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
        HSSFRow row = sheet.getRow(startRow-count);
        String cellValueTemp = sheet.getRow(startRow-count).getCell(0).getStringCellValue(); 
        HSSFCell cell = row.createCell(0);
        cell.setCellValue(cellValueTemp); // 跨单元格显示的数据    
                cell.setCellStyle(style); // 样式    
        count = 0;
        flag = false;
        }
        startRow=i;
        count++;        
        }else{
        flag = true;
        s_will = s_current;
        }
//由于上面循环中合并的单元放在有下一次相同单元格的时候做的,所以最后如果几行有相同单元格则要运行下面的合并单元格。
        if(i==endRow&&count>0)
        {
        sheet.addMergedRegion(new CellRangeAddress(endRow-count,endRow,cellLine,cellLine));   
        String cellValueTemp = sheet.getRow(startRow-count).getCell(0).getStringCellValue(); 
        HSSFRow row = sheet.getRow(startRow-count);
    HSSFCell cell = row.createCell(0);
    cell.setCellValue(cellValueTemp); // 跨单元格显示的数据    
                cell.setCellStyle(style); // 样式    
        }
        }
    }
    


你只要在导出excel的方法里调用:  addMergedRegion(sheet, 0, 0, sheet.getLastRowNum(),workBook);就是合并第一列的所有相同单元格。
  评论这张
 
阅读(15715)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018