NPOI 添加下拉列表

摘要:
需求给指定列添加下拉列表。加下拉列表有两种方式,一种直接写字符串,例如newString[]{"10","20","30"})。这种方式限制最大长度255.第二种引用其他单元格。本例中采取的这种方式。新建一个Sheet,将所有选项填入其中。如图中第一行是客户信息,第二行为付款方式信息等等。代码//////Theaddvalidation./////////要加入列表的sheet/////////选项sheet./////////标题单元格/////////列表项///privatestaticvoidAddValidation{//新建行varrow=itemSheet.CreateRow;//新行中写入选项for{varcell=row.CreateCell;cell.SetCellValue;}//要加下拉列表的范围varaddressList=newCellRangeAddressList;vardvHelper=sheet.GetDataValidationHelper();//格式Sheet2!

需求

给指定列添加下拉列表。如下图:

NPOI 添加下拉列表第1张

NPOI 添加下拉列表第2张

思路

  1. NPOI的文档网站不能访问了,这里参考的POI文档。
  2. 加下拉列表有两种方式,一种直接写字符串,例如 new String[]{"10", "20", "30"})。这种方式限制最大长度255.
  3. 第二种引用其他单元格。本例中采取的这种方式。新建一个Sheet,将所有选项填入其中。如图中第一行是客户信息,第二行为付款方式信息等等。

NPOI 添加下拉列表第3张

代码

/// <summary>
        /// The add validation.
        /// </summary>
        /// <param name="sheet">
        /// 要加入列表的sheet
        /// </param>
        /// <param name="itemSheet">
        /// 选项 sheet.
        /// </param>
        /// <param name="headerCell">
        /// 标题单元格
        /// </param>
        /// <param name="items">
        /// 列表项
        /// </param>
        private static void AddValidation(ISheet sheet, ISheet itemSheet, ICell headerCell, List<string> items)
        {
            // 新建行
            var row = itemSheet.CreateRow(itemSheet.PhysicalNumberOfRows);

            // 新行中写入选项
            for (int i = 0; i < items.Count; i++)
            {
                var cell = row.CreateCell(i);
                cell.SetCellValue(items[i]);
            }

            // 要加下拉列表的范围
            var addressList = new CellRangeAddressList(
                headerCell.RowIndex + 1,
                65535,
                headerCell.ColumnIndex,
                headerCell.ColumnIndex);

            var dvHelper = sheet.GetDataValidationHelper();

            // 格式 Sheet2!$A$1:$E$1
            var dvConstraint = dvHelper.CreateFormulaListConstraint(
                $"{itemSheet.SheetName}!$A${row.RowNum + 1}:${Common.Util.NumberToLetter(items.Count)}${row.RowNum + 1}");
            var validation = dvHelper.CreateValidation(dvConstraint, addressList);

            // 强制必须填下拉列表给出的值            
            // validation.ShowErrorBox = true;

            sheet.AddValidationData(validation);
        }

调用以客户列举例

    // 获取客户列表
    var list = new CustomerBll().GetModelList("dr = 0");
    var items = list.Select(c => c.cusname).ToList();

    // 添加下拉
    AddValidation(sheet, itemsSheet, headerRow.Cells.First(c => c.StringCellValue == "客户名称"), items);

参考资料:

  1. POI官方文档
  2. 作者tonyqus的NPOI官方Github

免责声明:文章转载自《NPOI 添加下拉列表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇grpc-gateway--支持grpc和restfulDBCC用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Stata—变量名称、描述和列举变量、标签使用、基本统计

1.变量名称 基本规则:由英文字母、数字或者_组成;需以英文字母或者_作为开头,区分大小写。 举例合理名称:a1 ,a_1,_a1 注意事项:“_”一般不作为首字母(因许多内部变量由“_”加字母组成,避免混淆) 2.查看资料命令 describe(可简写为des):查看所有变量的结构,如何时建立数据库,变量名称,储存类型,变量的显示格式,变量标签等 des...

Echarts自动刷新数据

1.Echarts自动刷新数据 1.Echarts柱状图的正常配置 注:声明了 myChart、test这两个都有用 官方示例中myChart是声明在 function(ec)里面的 <script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js"></scri...

centos7下Zookeeper+sheepdog集群搭建

zookeeper 安装命令 yum install zookeeper -y            (版本:zookeeper.x86_64      3.4.6-1) yum install zookeeper-lib -y            (版本:zookeeper-lib.x86_64   3.4.6-1) 配置文件:/etc/zooke...

解决无/var/log/messages 问题

转载于:https://blog.csdn.net/C_Major/article/details/51321684 1 内核编程insmod后,Ubuntu查看日志无/var/log/messages 写好简单内核模块如hellomod.ko后,执行命令 insmod hellomod.ko 后,查看内核打印的printk信息, tail /var/...

使用Node.js给图片加水印的方法

一、准备工作: 首先,确保你本地已经安装好了node环境。 然后,我们进行图像编辑操作需要用到一个Node.js的库:images。 这个库的地址是:https://github.com/zhangyuanwei/node-images,作者定义它为 “Node.js轻量级跨平台图像编解码库” ,并提供了一系列接口。 我们要做的首先是安装images库:...

nginx后端节点健康检查

一、nginx健康检查的三种方式 1、ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream 2、nginx_upstream_c...