在Excel导出过程中,若遇到合并单元格样式只有第一行合并,而下面要合并的行没有边框显示。
一般问题出在将单元格样式设置与合并单元格放在同一个循环中导致。
以下为一个完整版的demo以供参考
定义边框样式方法:
1 package com.ccb.excel.export; 2 3 import java.io.Serializable; 4 import java.net.URLEncoder; 5 6 import javax.servlet.http.HttpServletRequest; 7 8 import org.apache.commons.lang.StringUtils; 9 import org.apache.poi.hssf.usermodel.HSSFCellStyle; 10 import org.apache.poi.hssf.usermodel.HSSFFont; 11 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 12 import org.apache.poi.hssf.util.HSSFColor; 13 14 public class ExportFileNameUtils implements Serializable { 15 public static HSSFCellStyle initColumnHeadStyle(HSSFWorkbook wb) { 16 HSSFCellStyle columnHeadStyle = wb.createCellStyle(); 17 HSSFFont columnHeadFont = wb.createFont(); 18 columnHeadFont.setFontName("宋体"); 19 columnHeadFont.setFontHeightInPoints((short) 10); 20 columnHeadFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 21 columnHeadStyle.setFont(columnHeadFont); 22 columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中 23 columnHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中 24 columnHeadStyle.setLocked(true); 25 columnHeadStyle.setWrapText(true); 26 columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);// 左边框的颜色 27 columnHeadStyle.setBorderLeft((short) 1);// 边框的大小 28 columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色 29 columnHeadStyle.setBorderRight((short) 1);// 边框的大小 30 columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体 31 columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色 32 // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式) 33 columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index); 34 return columnHeadStyle; 35 } 36 37 public static HSSFCellStyle initColumnCenterstyle(HSSFWorkbook wb) { 38 HSSFFont font = wb.createFont(); 39 font.setFontName("宋体"); 40 font.setFontHeightInPoints((short) 10); 41 HSSFCellStyle centerstyle = wb.createCellStyle(); 42 centerstyle.setFont(font); 43 centerstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中 44 centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中 45 centerstyle.setWrapText(true); 46 centerstyle.setLeftBorderColor(HSSFColor.BLACK.index); 47 centerstyle.setBorderLeft((short) 1); 48 centerstyle.setRightBorderColor(HSSFColor.BLACK.index); 49 centerstyle.setBorderRight((short) 1); 50 centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体 51 centerstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色. 52 centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色. 53 return centerstyle; 54 } 55 }