/// <summary>
/// 合并单元格并加上边框
/// </summary>
/// <param name="sheet"></param>
/// <param name="rownumx0">开始行</param>
/// <param name="rownumx1">结束行</param>
/// <param name="cellnum0">开始列</param>
/// <param name="cellnum1">结束列</param>
private void AddMergedRegionAndBorder(ISheet sheet, int rownumx0, int rownumx1, int cellnum0, int cellnum1)
{
//初始行y0,结束行y1,初始列x0,结束列x1
CellRangeAddress region = new CellRangeAddress(rownumx0, rownumx1, cellnum0, cellnum1);
((HSSFSheet)sheet).SetEnclosedBorderOfRegion(region, BorderStyle.Thin, NPOI.HSSF.Util.HSSFColor.Black.Index);//加边框
sheet.AddMergedRegion(region);
}
/// <summary>
/// 创建行
/// </summary>
/// <param name="wb"></param>
/// <param name="sheet"></param>
/// <param name="rowNum">创建 一行 的行号 从0开始</param>
/// <param name="rowHeigh">行高</param>
private HSSFRow CreateRow(ISheet sheet, int rowNum, float rowHeight = 25)
{
HSSFRow row = (HSSFRow)sheet.CreateRow(rowNum); //创建行
row.HeightInPoints = rowHeight; //设置列头行高
return row;
}
/// <summary>
/// 设置样式
/// </summary>
/// <param name="wb"></param>
/// <param name="hAlignment">水平布局方式</param>
/// <param name="vAlignment">垂直布局方式</param>
/// <param name="isBorder">是否需要边框 true是</param>
/// <param name="fontPonint">字体大小</param>
/// <param name="boldWeight">字体加粗 (short.MaxValue)</param>
/// <returns></returns>
private HSSFCellStyle CreateStyle(HSSFWorkbook wb, HorizontalAlignment hAlignment, VerticalAlignment vAlignment, bool isBorder = true, short fontPonint = 10, bool isBold = false)
{
HSSFCellStyle cellStyle = (HSSFCellStyle)wb.CreateCellStyle(); //创建列头样式
cellStyle.Alignment = hAlignment; //水平居中
cellStyle.VerticalAlignment = vAlignment; //垂直居中
if (isBorder)
{
cellStyle.BorderBottom = BorderStyle.Thin;
cellStyle.BorderLeft = BorderStyle.Thin;
cellStyle.BorderRight = BorderStyle.Thin;
cellStyle.BorderTop = BorderStyle.Thin;
}
HSSFFont cellStyleFont = (HSSFFont)wb.CreateFont(); //创建字体
cellStyleFont.IsBold = isBold; //字体加粗
cellStyleFont.FontHeightInPoints = fontPonint; //字体大小
cellStyle.SetFont(cellStyleFont); //将字体绑定到样式
cellStyle.WrapText = true;
return cellStyle;
}
/// <summary>
/// 创建单元格
/// </summary>
/// <param name="row">需要创建单元格的行</param>
/// <param name="cellStyle">单元格样式</param>
/// <param name="cellNum">创建第几个单元格(从0开始)</param>
/// <param name="cellValue">给单元格赋值</param>
/// <returns></returns>
private HSSFCell CreateCell(HSSFRow row, ICellStyle cellStyle, int cellNum, string cellValue)
{
HSSFCell cell = (HSSFCell)row.CreateCell(cellNum); //创建单元格
cell.CellStyle = cellStyle; //将样式绑定到单元格
if (!string.IsNullOrEmpty(cellValue))
{
cell.SetCellValue(cellValue);
}
return cell;
}
注意事项:如果是列合并的话,必须得有相应单元格。比如:合并两列须有得创建两个单元格,不然的话,没有合并后边框不全。