POI 導出Excel合並單元格后部分邊框不顯示


用戶需要導出自定義表格,其中合並單元格樣式遇到的問題,合並后只顯示第一行第一列的邊框,其他邊框不顯示,於是遍查百度,尋到一點思路

①了解Excel繪制原理

②了解繪制Excel順序

③繪制Excel單元格的三種方法

先傳一張效果圖

下面來解釋一下上面說的三點

首先,創建了表格的行和列后,再繪制表格樣式

其次,先創建行,再創建列,合並單元格前要先把要合並的行數和列數創建完成,然后通過sheet.getrow()來獲取具體的行數,設置表格樣式。比如:想要得到上面樣式的表格首先要創建四行sheet.createrow(4),設置第一個合並單元格樣式,首先要sheet.getrow(行數)。

最后,三種創建表格的樣式的方法CellRangeAddress,Region,RegionUtil.setBorderBottom(設置單元格樣式,RegionUtil為import org.apache.poi.ss.util.RegionUtil;)

前兩種方法網上有很多具體的例子,這里就不贅述了

本人也嘗試了前兩種方式,但是都不能實現上述Excel合並效果

我使用的是第三種方法,代碼如下:

和上面的圖不一致,但是效果可以實現,結合上一篇導出excel可以試一試,

特別提示:Excel繪制一定要整體布局,按行布局,注意先后順序,否則容易出現樣式問題。

希望可以幫助需要的人,還是要多多練習哦!

row=sheet.createRow(11);
row=sheet.createRow(12);
row=sheet.createRow(13);
row=sheet.createRow(14);
HSSFCell cell=null;
row=sheet.getRow(11);
cell=row.createCell(18);
row.setHeight((short)460);
cra=new CellRangeAddress((short) 11 , (short) 14 , (short)18, (short)18);
sheet.addMergedRegion(cra);
RegionUtil.setBorderBottom(1, cra, sheet,workbook); // 下邊框
RegionUtil.setBorderLeft(1, cra, sheet,workbook); // 左邊框
RegionUtil.setBorderRight(1, cra, sheet,workbook); // 有邊框
RegionUtil.setBorderTop(1, cra, sheet,workbook); // 上邊框
cell.setCellValue("");


ResponseFlagEntity jr=new ResponseFlagEntity();
try{
response.setContentType("application ns.ms-excel");
response.setHeader("Content-disposition", "attachment;filename="
+ URLEncoder.encode("測試.xls", "UTF-8"));
response.setHeader("Pragma", "No-cache");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM