上面是加边框的核心代码,为单元格的上,下左,右四边加边框!我测试在单个合并单元格的时候,是没有什么问题的!但是当我用下面代码的时候会出现有的边框没有
- Row row=sheet.createRow((short)0);  
-       ImageUtil.createCell("排序", 0, sctext, row);  
-       CellRangeAddress CellRangeAddress1 = new CellRangeAddress(0,2,0,0);  
-       sheet.addMergedRegion(CellRangeAddress1);  
-   
-       RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);  
-       RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);  
-       RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);  
-       RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);  
-       ImageUtil.createCell("项目名称", 1, sctext, row);  
-       CellRangeAddress CellRangeAddress2 = new CellRangeAddress(0,2,1,1);  
-       sheet.addMergedRegion(CellRangeAddress2);  
-         
-       ImageUtil.createCell("姓名", 2, sctext, row);  
-       CellRangeAddress CellRangeAddress3 = new CellRangeAddress(0,2,2,2);  
-       sheet.addMergedRegion(CellRangeAddress3);     
-          
-       ImageUtil.createCell("各指标完成情况总数据", 3, sctext, row);  
-       CellRangeAddress CellRangeAddress4 = new CellRangeAddress(0,0,3,8);  
-       sheet.addMergedRegion(new CellRangeAddress(0,0,3,8));     
-        
-       ImageUtil.createCell("各指标完成率", 9, sctext, row);  
-       CellRangeAddress CellRangeAddress5 = new CellRangeAddress(0,0,9,14);  
-       sheet.addMergedRegion(CellRangeAddress5);    
-       
-       Row row2=sheet.createRow((short)1);  
-       ImageUtil.createCell("覆盖面", 3, sctext, row2);  
-       CellRangeAddress CellRangeAddress6 = new CellRangeAddress(1,1,3,4);  
-       sheet.addMergedRegion(CellRangeAddress6);  
-         
-       ImageUtil.createCell("频次", 5, sctext, row2);  
-       CellRangeAddress CellRangeAddress7 = new CellRangeAddress(1,1,5,6);  
-       sheet.addMergedRegion(CellRangeAddress7);  
 
 结果如下图:

 
最后是顺序问题导致的.其原因是因为在编辑单元格的时候,后者覆盖了前者的style.
解决办法:
封装了一个方法:
 
- public void setBorder(CellRangeAddress cellRangeAddress, Sheet sheet,  
-             Workbook wb) throws Exception {  
-         RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);  
-         RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);  
-         RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);  
-         RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);  
-           
- }  
 
 然后将调用该方法的步骤放到最后,记得是最后,就是全部单元格合并之后,否则会覆盖的,如下: