
RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);
RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);
RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);
RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);
上面是加邊框的核心代碼,為單元格的上,下左,右四邊加邊框!我測試在單個合并單元格的時候,是沒有什麼問題的!但是當我用下面代碼的時候會出現有的邊框沒有

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);
}
然後将調用該方法的步驟放到最後,記得是最後,就是全部單元格合并之後,否則會覆寫的,如下:

super.setBorder(CellRangeAddress1, sheet, book);
super.setBorder(CellRangeAddress2, sheet, book);
super.setBorder(CellRangeAddress3, sheet, book);
super.setBorder(CellRangeAddress4, sheet, book);
super.setBorder(CellRangeAddress5, sheet, book);
super.setBorder(CellRangeAddress6, sheet, book);
super.setBorder(CellRangeAddress7, sheet, book);
super.setBorder(CellRangeAddress8, sheet, book);
super.setBorder(CellRangeAddress9, sheet, book);
super.setBorder(CellRangeAddress10, sheet, book);
super.setBorder(CellRangeAddress11, sheet, book);
super.setBorder(CellRangeAddress12, sheet, book);
super.setBorder(CellRangeAddress13, sheet, book);
super.setBorder(CellRangeAddress14, sheet, book);
super.setBorder(CellRangeAddress15, sheet, book);
super.setBorder(CellRangeAddress16, sheet, book);