用NPOI操作EXCEL--生成下拉列表_小赖赖赖的博客-程序员宝宝

技术标签: NPOI  

 用NPOI操作EXCEL--生成下拉列表

     设置步骤为:
(1)选定一个要生成下拉列表的区域;
(2)设置数据有效性为序列,并在来源中填充可选下拉的值,用“,”隔开(如图)。

对应的效果为:


同样,利用NPOI代码也可以实现上面的效果:
复制代码
HSSFSheet sheet1  =  hssfworkbook.CreateSheet( " Sheet1 " );

CellRangeAddressList regions 
=   new  CellRangeAddressList( 0 65535 0 0 );
DVConstraint constraint 
=  DVConstraint.CreateExplicitListConstraint( new   string [] {  " itemA " " itemB " " itemC "  });
HSSFDataValidation dataValidate 
=   new  HSSFDataValidation(regions, constraint);
sheet1.AddValidationData(dataValidate);
复制代码
下面对代码作一下简要说明:
先设置一个需要提供下拉的区域,关于CellRangeAddressList构造函数参数的说明请参见 上一节
CellRangeAddressList regions  =   new  CellRangeAddressList( 0 65535 0 0 );
然后将下拉项作为一个数组传给CreateExplicitListConstraint作为参数创建一个约束,根据要控制的区域和约束创建数据有效性就可以了。

      但是这样会有一个问题:Excel中允许输入的序列来源长度最大为255个字符,也就是说当下拉项的总字符串长度超过255是将会出错。那么如果下拉项很多的情况下应该怎么处理呢?答案是通过引用的方式。步骤如下:
先创建一个Sheet专门用于存储下拉项的值,并将各下拉项的值写入其中:
HSSFSheet sheet2  =  hssfworkbook.CreateSheet( " ShtDictionary " );
sheet2.CreateRow(
0 ).CreateCell( 0 ).SetCellValue( " itemA " );
sheet2.CreateRow(
1 ).CreateCell( 0 ).SetCellValue( " itemB " );
sheet2.CreateRow(
2 ).CreateCell( 0 ).SetCellValue( " itemC " );
然后定义一个名称,指向刚才创建的下拉项的区域:
HSSFName range  =  hssfworkbook.CreateName();
range.Reference 
=   " ShtDictionary!$A1:$A3 " ;
range.NameName 
=   " dicRange " ;
最后,设置数据约束时指向这个名称而不是字符数组:
HSSFSheet sheet1  =  hssfworkbook.CreateSheet( " Sheet1 " );
CellRangeAddressList regions 
=   new  CellRangeAddressList( 0 65535 0 0 );

DVConstraint constraint 
=  DVConstraint.CreateFormulaListConstraint( " dicRange " );
HSSFDataValidation dataValidate 
=   new  HSSFDataValidation(regions, constraint);
sheet1.AddValidationData(dataValidate);
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lai124793549/article/details/39145865

智能推荐

大数据BI工具Tableau学习【第一期】:Tableau简介和安装_张国荣家的弟弟的博客-程序员宝宝_bi工具tableau

tableau 使命:tableau是一个可视化分析平台,也可以是一种辅助性决策的工具软件,它改变了我们使用数据解决问题的方式,使个人和组织能够充分利用自己的数据。它的能力1.tableau帮助个人和组织提供数据驱动水平2.凭借人人可用的直观可视化分析,打破了商业智能行业的原有格局3.tableau帮助人们使用数据推动变革客户现身说法...

统计一个字符串中每种字符出现的次数 ?_Sword_meaning的博客-程序员宝宝

var str="HELLOWORLD" ; var arr=[] ; for(var i=0 ;i<str.length ;i++){ var char=str[i] ; //console.log(char) ; //通过打印char我们得到的是下面这样一个关联数组 ; ![](https://img-blog.csdnimg.cn/20191109153203371.pn...

Leetcode--计算一个字符串中最长的有效括号字符长度_你听的到、的博客-程序员宝宝

Leetcode–计算一个字符串中最长的有效括号字符长度首先这又是一道括号匹配的问题,我这里先记录一下之前几道类似的题目:1、给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路:首先空串题目认为是有效字符串,这里只需简单判断...

深度学习中遇到的各种参数总结_躺着醒,醒着睡的博客-程序员宝宝_深度学习中的参数

深度学习里面的各种参数做一个学习记录提示:自己根据自己的理解写的,水平有限,仅供参考,如有错误,欢迎指正个人学习记录,仅供参考深度学习里面的各种参数做一个学习记录1. batchsize,iteration,epoch2. filter,kernel_size,stride,padding3. ReLU,sigmoid,softmax4. BatchNormal,Dropout,num_classes,mini_batch5. receptive field1. batchsize,iteratio

TDC-GP22的研究_我信张i的博客-程序员宝宝_tdc-gp22

本资源包含TDC-GP22的使用手册,TDC芯片寄存器的官方配置,本人基于stm32写的TDC-GP22寄存器配置程序,TDC-GP22的接线图和一个用文档方式写的注意事项文件:url80.ctfile.com/f/25127180-557023468-dd5834(访问密码:551685)以下内容无关:setState同步异步场景React通过this.state来访问state,通过this.setState()方法来更新state,当this.setState()方法被调用的时候,Reac

随便推点

ubuntu WPS 报错系统缺失字体symbol、wingdings、wingdings 2、wingdings 3_Haochengqi的博客-程序员宝宝_系统缺失字体:symbol

出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可。1下载缺失的字体文件,然后复制到Linux系统中的/usr/share/fonts文件夹中, 解压http://pan.baidu.com/s/1mh0lcbY2执行以下命令,生成字体的索引信息:sudo mkfontscalesudo mkfontdir3运行fc-cache命令更新字体缓存sudofc-cache4. 重启w...

Java面试题十五(Kafka)_夏至青柠的博客-程序员宝宝

152.kafka 可以脱离 zookeeper 单独使用吗?为什么?  kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。153.kafka 有几种数据保留的策略?  kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?  这个时候 kafka 会执行数据清除工作,

CAN中继 can总线中继器、can总线中继模块波特率和滤波设置_mmprime的博客-程序员宝宝_can中继器

can总线隔离中继器、canbridge、CanRepeater的can波特率和验收滤波设置。波特率支持2.5kbps~1Mbps之间任意设置,验收滤波设置支持20个组合的列表或屏蔽模式的ID过滤。1、配套的配置软件是绿色软件,无需安装,直接双击打开软件:2、搜索设备-读取配置3、设置can通道通讯波特率“CAN0参数”设置界面对应can总线隔离中继器的CAN1通道;“CAN1参数...

Bash shell echo如何原生输出带空格的字符串而不换行_ethnicitybeta的博客-程序员宝宝_shell输出空格

假如我们有一个文本文件 coder.txt,内容如下:Twinkle, twinkle, little star,How I wonder what you are.然后我们使用 cat 逐行打印这个文件,在终端中执行以下指令:cat coder.txt输出效果:那么现在有一个需求,假如需要对每行文本做进一步的处理,在bash中使用for循环逐行处理。我们先这样写:for f in `cat coder.txt`; do echo $f; done我们预期会像cat指令一样.

CS285课程笔记(6)——Inverse Reinforcement Learning_RavenRaaven的博客-程序员宝宝

1. 为什么要引入Inverse Reinforcement Learning2. Inverse RL问题的定义3. 经典方法3.1 Feature Matching IRL & Maximum Margin Planning3.2 Maximum Entropy IRL4. 与深度学习结合的方法4.1 Guided Cost Learing Algorithm4.2 IRL & GANs...

[EI检索]2022智能制造、先进传感与大数据国际会议诚邀您关注_m0_64094619的博客-程序员宝宝

International Conference on Intelligent Manufacturing, Advanced Sensing and Big Data一、基本信息【大会官网】:http://www.imasbd.org/【会议时间】:2022年3月18-20日【会议地点】:中国 .桂林【截稿日期】:2022年1月18号【录用/拒稿通知】:投稿后7-15个工作日【收录检索】:EI、Scopus。出版:Elsevier【官方邮箱】:[email protected]