• NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)


    NPIO源码地址:https://github.com/tonyqus/npoi

    NPIO使用参考:源码中的 NPOITest项目

    下面代码包括:

    1、包含多个Sheet的Excel

    2、单元格合并

    3、设置单元格样式:字段,颜色

    4、设置单元格为下拉框并限制输入值

    5、设置单元格只能输入数字

     //
            // GET: /Excel/
            public ActionResult Write()
            {
                var workbook = new HSSFWorkbook();//从流内容创建Workbook对象
                ISheet sheet = ((HSSFWorkbook)workbook).CreateSheet("sheetOne");//创建工作表
    
                IRow row = sheet.CreateRow(0);//在工作表中添加一行
                ICell cell = row.CreateCell(1);//在行中添加一列
                cell.SetCellValue("test");//设置列的内容
                setCellStyle(workbook, cell);
                mergeCell(sheet, 0, 0, 1, 4);
    
                sheet = ((HSSFWorkbook)workbook).CreateSheet("sheet2");//创建工作表
                setCellDropdownlist(sheet);
                setCellInputNumber(sheet);
    
                string filePath = Server.MapPath("~/ExportFiles/test.xls");
                FileStream fs = new FileStream(filePath, FileMode.Create);
                workbook.Write(fs);
                fs.Close();
    
                return null;
            }
    
            /// <summary>
            /// 设置单元格为下拉框并限制输入值
            /// </summary>
            /// <param name="sheet"></param>
            private void setCellDropdownlist(ISheet sheet)
            {
                //设置生成下拉框的行和列
                var cellRegions = new CellRangeAddressList(0, 65535, 0, 0);
    
                //设置 下拉框内容
                DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(
                    new string[] { "itemA", "itemB", "itemC" });
    
                //绑定下拉框和作用区域,并设置错误提示信息
                HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);
                dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。");
                dataValidate.ShowPromptBox = true;
    
                sheet.AddValidationData(dataValidate);
            }
    
            /// <summary>
            /// 设置单元格只能输入数字
            /// </summary>
            /// <param name="sheet"></param>
            private void setCellInputNumber(ISheet sheet)
            {
                //设置生成下拉框的行和列
                var cellRegions = new CellRangeAddressList(0, 65535, 1, 1);
    
                //第二个参数int comparisonOperator  参考源码获取
                //https://github.com/tonyqus/npoi
                //NPOITest项目
                DVConstraint constraint = DVConstraint.CreateNumericConstraint(
                    ValidationType.INTEGER, OperatorType.BETWEEN, "0", "100");
                
                HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);
                dataValidate.CreateErrorBox("输入不合法", "请输入1~100的数字。");
                //dataValidate.PromptBoxTitle = "ErrorInput";
    
                sheet.AddValidationData(dataValidate);
            }
    
            /// <summary>
            /// 合并单元格
            /// </summary>
            /// <param name="sheet"></param>
            /// <param name="firstRow"></param>
            /// <param name="lastRow"></param>
            /// <param name="firstCell"></param>
            /// <param name="lastCell"></param>
            private void mergeCell(ISheet sheet, int firstRow, int lastRow, int firstCell, int lastCell)
            {
                sheet.AddMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCell, lastCell));//2.0使用 2.0以下为Region
            }
    
            /// <summary>
            /// 设置单元格样式
            /// </summary>
            /// <param name="workbook"></param>
            /// <param name="cell"></param>
            private void setCellStyle(HSSFWorkbook workbook, ICell cell)
            {
                HSSFCellStyle fCellStyle = (HSSFCellStyle)workbook.CreateCellStyle();
                HSSFFont ffont = (HSSFFont)workbook.CreateFont();
                ffont.FontHeight = 20 * 20;
                ffont.FontName = "宋体";
                ffont.Color = HSSFColor.Red.Index;
                fCellStyle.SetFont(ffont);
    
                fCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直对齐
                fCellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平对齐
                cell.CellStyle = fCellStyle;
            }
  • 相关阅读:
    asp.net 下载EXCEL文件
    C# 泛型实现Table与实体的相互转换
    SQL处理数据并发,解决ID自增
    html Canvas 画图 能够选择并能移动
    AJAX get/post;
    (转) C# Async与Await的使用
    FormattableString 取代特定区域字符串
    少用 string.Format
    少用 string.Format
    如何重写object虚方法
  • 原文地址:https://www.cnblogs.com/gossip/p/4307486.html
Copyright © 2020-2023  润新知