excel下拉菜单
第一种方法:数据有效性
第一步:打开Excel工作薄——>选定某一单元格——>点击上方的数据(D)菜单——>点击有效性(L);
第二步:将弹出数据有效性窗口,在设置选项卡中有效性条件下方找到允许(A),将其设置为序列——>然后再将忽略空值(B)和提供下拉箭头(I)两项前面打上勾;
第三步:最后在来源(S)中,输入您需要的菜单选项数据,比如,需要设置1、2、3为下拉菜单中的可选项,就在来源(S)下方输入1,2,3,每一组数据之间必须以英文标点的逗号,隔开,不能用中文全角的逗号,——>最后点击确定退出即可;
补充说明:在来源(S)中还可以直接引用某些单元格内的数据作为下拉菜单的可选项,只需要在来源(S)下方输入一串代码即可,比如,想要让第一列的单元格A1至A5中的数据作为可选项,就在来源(S)下方输入=$A$1:$A$5(不含引号,且必须使用英文符号和标点);
二种方法:自动生成可选项的范围
第一步:首先定义可选项数据的范围,也就是说出现在下拉菜单中的选项是哪些数据,这个范围只能是某一行或某一列;使用鼠标框选某一行或某一列的数据——>然后点击上方的插入菜单——>点击名称(N)——>选择自定义(D);
第二步:将弹出的自定义名称窗口,在在当前工作薄中的名称(W)下输入dw——>点击右边的添加——>点击确定退出;
第三步:选中要设置Excel下拉列表的单元格后——>点击有效性——>在设置选项卡中,将允许(A)设置为序列——>在来源(S)下输入=dw(不含引号)——>点击确定即可;
第三种方法:筛选
利用筛选功能自动生成Excel下拉选项,采用此方法会将Excel工作薄的某一列中的所有数据都作为下拉菜单中的可选项;
第一步:打开Excel工作薄——>用鼠标框选住需要设置Excel下拉选项的某一行内容(如,单位名称、产品名称、日期、数量这一行);
第二步:然后点击上方的数据(D)菜单——>点击筛选——>选择自动筛选;
采用自动筛选方法生产的Excel下拉列表、Excel下拉菜单、Excel下拉选项,会将整个一列的数据都作为可选项被使用;
第四种方法: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);
上一篇:word2003教程
下一篇:理财“五囧”
excel下拉菜单









