業務是導出一個報表,要求有一個跨多列的表頭,肯定要用到合並單元格,但合並后邊框消失。網上的一些解決辦法是重寫合並單元格方法,但弄清楚原因后,其實沒必要。
原來是這樣的:
合並后就第一個有邊框,其余全成空白了,上代碼:
HSSFCellStyle style = wb.createCellStyle(); 創建樣式
style.setAlignment(HSSFCellStyle.ALIGN_RIGHT); //字體右對齊
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下邊框
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左邊框
style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框
style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框
HSSFRow row = sheet.createRow(1); HSSFCell cel = row.createCell(0); cel.setCellValue("編制人:" + "admin" + " 日期:" + sdf.format(new Date())); cel.setCellStyle(style); for (int j = 1; j <= 11; j++) { cel = row.createCell(j); cel.setCellStyle(style); //style為帶邊框的樣式 上面有定義 cel.setCellValue(""); }
運行后:
哈哈!完美的解決了
分析:創建的行的的時候只row.createCell(0),當然只有第一列有邊框,其余沒邊框了,然后一合並,結果就顯而易見出現圖一的情況了。但要是創建等多的單元格,每個單元格都加上邊框,再合並就沒事了。
還是搞清原理比較好。還有一個根據單元格內容自適應高寬的問題,官方給的有問題,還沒解決。>_<