HSSFWorkbook workbook = new HSSFWorkbook();//创建工作簿
ISheet sheet = workbook.CreateSheet();//创建sheet页
var namelist = new string[] { "张三", "李四", "王五" };//创建一个数组作为数据源

var cellRegions = new CellRangeAddressList(5, 65535, 0, 0);//设置生成下拉框的行和列,从第6行到第65536行,从第0列到第0列

//Excel中允许输入的序列来源长度最大为255个字符,也就是说当下拉项的总字符串长度超过255是将会出错。所以我将下拉列表分为简易列表和引用列表(设置下拉列表的数据源是某一个sheet页)

1、简易列表
DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(namelist);//将下拉项作为一个数组传给CreateExplicitListConstraint作为参数创建一个约束
HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);//绑定下拉框和作用区域,并设置错误提示信息
dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。");
dataValidate.ShowPromptBox = true;//显示提示框
sheet.AddValidationData(dataValidate);//添加下拉列表

2、sheet列表

public void CreateDropdownlist(int firstRow, int col, string name, string[] strarray)
{
  ISheet sheet = WorkBook.CreateSheet(name);//先创建一个Sheet专门用于存储下拉项的值
  WorkBook.SetSheetHidden(WorkBook.GetSheetIndex(name), SheetState.Hidden);//隐藏Sheet
  int index = 0;
  foreach (var str in strarray)//将下拉列表中的数据循环赋给sheet页
  {
    sheet.CreateRow(index++).CreateCell(0).SetCellValue(str);
  }

  定义一个名称,指向刚才创建的下拉项的区域:
  var rangeName = name + "Range";
  IName range = WorkBook.CreateName();
  range.RefersToFormula = name + "!$A$1:$A$" + (index == 0 ? 1 : index);
  range.NameName = rangeName;

  //-----------------分割线以上是用来创建一个sheet页赋值,然后将sheet页中的内容定义成一个名称,后面用来当作数组传入方法的过程-----------------------

  CellRangeAddressList cellRegions = new CellRangeAddressList(firstRow, 65535, col, col);//划一块地,这块地我要留着种黄瓜

  DVConstraint constraint = DVConstraint.CreateFormulaListConstraint(rangeName);//弄来了二斤瓜苗(补充一下:这里如果传进来的是一堆瓜苗就直接用了,如果是传回来的是一个字符串,比如说“翠花家”,我就去翠花找黄瓜去了)

  HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions , constraint);//把瓜苗种地里

  dataValidate.CreateErrorBox("输入不合法", "请输入或选择下拉列表中的值。");//提示你挖错了,我这是黄瓜地,茄子在隔壁翠花的地里
  dataValidate.ShowPromptBox = true;  

  WorkBook.GetSheetAt(0).AddValidationData(dataValidate);//雷猴,终于种完地了,回家睡觉
}

NPOI 设置下拉列表的更多相关文章

  1. NPOI设置单元格背景色

    NPOI设置单元格背景色在网上有好多例子都是设置为NPOI内置的颜色值 但是想用rgb值来设置背景色,即:通过HSSFPalette类获取颜色值时会抛出异常:Could not Find free c ...

  2. npoi设置数据有效性

    npoi设置数据有效性 public void SetDataValidate(ISheet sheet, int firstCol, int lastCol) { CellRangeAddressL ...

  3. layui利用jQuery设置下拉列表的值

    今天在利用jQuery动态设置下拉列表的值的时候确怎么也赋值不上去,其中用到了layui框架,源代码如下: $.post(contextPath+'/courseLibrary/getCourseBa ...

  4. 分别在javascript和JSP中动态设置下拉列表默认值

    一.JavaScript中动态设置select标签中<option>选项的默认值: 比如,要完成下边这个下拉列表的动态显示,并且当进行前后翻页时,下拉列表中的值自动更新为当前页码: 图1 ...

  5. NPOI设置Excel保护

    有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完成,如下图:  那么,在NPOI中有没有办法通过编码的方式达到 ...

  6. android怎样自定义设置下拉列表样式

    图样: 实现方式: 1.水平布局一个TextView和一个ImageView(小黑箭头) 2.实现点击ImageView的单击事件,弹出PopupWindow 3.PopupWindow中实现下拉列表 ...

  7. NPOI设置单元格格式

    转自:http://www.cr173.com/html/18143_2.html //创建一个常用的xls文件 private void button3_Click(object sender, E ...

  8. NPOI设置Excel单元格字体、边框、对齐、背景色

    代码: ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.BorderBottom = BorderStyle.Thin; ce ...

  9. NPOI 设置导出的excel内容样式

    导出excel时,有时要根据需要加上一些样式,以上几种样式是我在项目中用到的 一.给单元格加背景色只需两步:一是创建单元格背景景色对象:二是给单元格绑定样式 //创建单元格背景颜色对象 HSSFPal ...

随机推荐

  1. Java求吸血鬼数算法(通用)

    /*吸血鬼数字是指位数为偶数的数字,可以由一 * 对数字相乘而得到,而这对数字各包含乘积的一半位数的数字, * 其中从最初的数字中选取的数字可以任意排序. * 以两个0结尾的数字是不允许的. * * ...

  2. day 41 css固定位置 以及小米商城项目

    .如何让一个绝对定位的盒子居中 left:%; margin-left:- 宽度的一半 .固定定位 position: fixed; ()脱标 参考点:浏览器的左上角 作用:固定导航栏 返回顶部 小广 ...

  3. 2019/12/1 智能硬件实验室(ROS方向)

    浅谈安装ubuntu与ros感想 ubuntu 以前看电脑软件安装管家上的教程尝试在另一台电脑上安装ubuntu(虚拟机上),但是后面遇到了无法解决的问题,放弃了.这次因为选的ros方向,所以昨天在学 ...

  4. Tensorflow多层LSTM代码分析

    1.tf.Graph() 你一旦开始你的任务,就已经有一个默认的图已经创建好了.而且可以通过调用tf.get_default_graph()来访问到. 添加一个操作到默认的图里面,只要简单的调用一个定 ...

  5. ip地址计算

    1.多少个子网? 2x个,其中x为被遮盖(取值为1)的位数.例如,在11000000(这个值是子网掩码的最后几位,例如,mask=18)中,取值为1的位数为2,因此子网数位22=4个: 2.每个子网包 ...

  6. 插入节点(appendChild())

    appendChild():方法将给元素节点追加一个子节点: reference = element.appendChild(newChild); 如上所示,给定节点newChild将成为给定元素节点 ...

  7. python_爬虫

    1.网络爬虫    1.定义:网络蜘蛛,网络机器人,抓取网络数据的程序    2.总结:用Python程序去模仿人去访问网站,模仿的越逼真越好    3.目的:通过有效的大量的数据分析市场走势,公司的 ...

  8. PHP连接XMPP用户,聊天室 进行增删改查。

    1.到http://www.igniterealtime.org/projects/openfire/plugins.jsp下载一个插件REST API. 这个插件的作用就是允许程序设计师通过http ...

  9. C# 自然周,月,季度计算。

    /// <summary> /// 判断时间是否和服务器时间是一天 /// </summary> /// <param name="cs">&l ...

  10. jQuery基础之事件

    jQuery基础之事件方法,如下图: 代码实现: <script src="JS/jquery-1.12.4.min.js"></script> <s ...