天天看點

POI Excel表格合并,邊框設定

POI Excel表格合并,邊框設定

RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);  

RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);  

RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);  

RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);  

上面是加邊框的核心代碼,為單元格的上,下左,右四邊加邊框!我測試在單個合并單元格的時候,是沒有什麼問題的!但是當我用下面代碼的時候會出現有的邊框沒有

POI Excel表格合并,邊框設定

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

 結果如下圖:

POI Excel表格合并,邊框設定

最後是順序問題導緻的.其原因是因為在編輯單元格的時候,後者覆寫了前者的style.

解決辦法:

封裝了一個方法:

POI Excel表格合并,邊框設定

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

}  

 然後将調用該方法的步驟放到最後,記得是最後,就是全部單元格合并之後,否則會覆寫的,如下:

POI Excel表格合并,邊框設定

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