在Excel中合并了单元格,仅使用的是下面的代码
CellRangeAddress cra = new CellRangeAddress(0, 0, 0, (rowName.length-1));
sheet.addMergedRegion(cra);
可以顺利地合并指定区域的单元格,但是其边框却无法显示完全,采用poi中的RegionUtil类可以成功解决:
/**
* @param border 边框宽度
* @param region 合并单元格区域范围
* @param sheet
* @param wb
*/
public static void setRegionBorder(int border, CellRangeAddress region, Sheet sheet,Workbook wb){
RegionUtil.setBorderBottom(border,region, sheet, wb);
RegionUtil.setBorderLeft(border,region, sheet, wb);
RegionUtil.setBorderRight(border,region, sheet, wb);
RegionUtil.setBorderTop(border,region, sheet, wb);
}
这里是局部的调用示例:
//表格标题行
HSSFCellStyle style0 = getStyle(wb, "宋体", 24, HSSFFont.BOLDWEIGHT_BOLD, HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_CENTER);
HSSFRow rowm0 = sheet.createRow(0);
rowm0.setHeightInPoints(76);//设置行的高度是50个点
HSSFCell cellTiltle = rowm0.createCell(0);
cra = new CellRangeAddress(0, 0, 0, (rowName.length-1));
sheet.addMergedRegion(cra);
setRegionBorder(1, cra, sheet, wb);//合并单元格并设置边框
cellTiltle.setCellValue(title);
cellTiltle.setCellStyle(style0);
/**
* 数据信息单元格样式
* @param workbook
* @param fontName
* @param fontSize
* @param fontWeight
* @param horAlignment
* @param verAlignment
* @return
*/
public static HSSFCellStyle getStyle(HSSFWorkbook workbook,String fontName,int fontSize,int fontWeight,int horAlignment,int verAlignment) {
// 设置字体
HSSFFont font = workbook.createFont();
//设置字体大小
font.setFontHeightInPoints((short)fontSize);
//字体加粗
font.setBoldweight((short) fontWeight);
//设置字体名字
font.setFontName(fontName);
//设置样式;
HSSFCellStyle style = workbook.createCellStyle();
//设置底边框;
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
//设置底边框颜色;
style.setBottomBorderColor(HSSFColor.BLACK.index);
//设置左边框;
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
//设置左边框颜色;
style.setLeftBorderColor(HSSFColor.BLACK.index);
//设置右边框;
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
//设置右边框颜色;
style.setRightBorderColor(HSSFColor.BLACK.index);
//设置顶边框;
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
//设置顶边框颜色;
style.setTopBorderColor(HSSFColor.BLACK.index);
//在样式用应用设置的字体;
style.setFont(font);
//设置自动换行;
style.setWrapText(true);
//设置水平对齐的样式为居中对齐;
style.setAlignment((short) horAlignment);
//设置垂直对齐的样式为居中对齐;
style.setVerticalAlignment((short) verAlignment);
return style;
}