NPOI 导出Excel表格-方法集合

       /// <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;
        }
注意事项:如果是列合并的话,必须得有相应单元格。比如:合并两列须有得创建两个单元格,不然的话,没有合并后边框不全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值