使用NPOI操作Excel时,给一列所有的单元格加上下拉框的输入限制

原创 2012年03月27日 16:12:51
public static HSSFDataValidation CreateListConstaint(this HSSFWorkbook book, Int32 columnIndex, IEnumerable<String> values)
        {
            var sheetName = "_constraintSheet_";
            HSSFSheet sheet = book.GetSheet(sheetName) ?? book.CreateSheet(sheetName);
            var firstRow = sheet.GetRow(0);
            var conColumnIndex = firstRow == null ? 0 : firstRow.PhysicalNumberOfCells;
            var rowIndex = 0;
            var lastValue = "";
            
            foreach (var value in values)
            {
                var row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex);
                row.CreateCell(conColumnIndex).SetCellValue(value);
                rowIndex++;
                lastValue = value;
            }


            //如果只有一个可选值的话,则增加一个相同的选项,不然在Excel中会有问题,可能是NPOI的BUG
            if(values.Count() ==1)
            {
                var row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex);
                row.CreateCell(conColumnIndex).SetCellValue(lastValue);
                rowIndex++;
            }


            HSSFName range = book.CreateName();
            range.Reference = String.Format("{2}!${0}$1:${0}${1}",
                                            (Char)('A' + conColumnIndex),
                                            rowIndex.ToString(),sheetName);


            string rangeName = "dicRange" + columnIndex;
            range.NameName = rangeName;


            var cellRegions = new CellRangeAddressList(1, 65535, columnIndex, columnIndex);


            var constraint = DVConstraint.CreateFormulaListConstraint(rangeName);


            book.SetSheetHidden(book.GetSheetIndex(sheet), true);


            return new HSSFDataValidation(cellRegions,constraint);
        }
使用举例:
IEnumerable<MyObj> channels = DataMaintenanceDataContext.LoadAll<MyObj>();
sheet.AddValidationData( book.CreateListConstaint(1, Array.ConvertAll(o.ToArray(),o=>o.Name) ) );



                    

使用NPOI对Excel单元格增加下拉选框

1、Excel下拉框的实现 Excel单元格的下拉选框是使用“数据”-->"数据验证"-->设置-->选择验证条件实现的,有若干种验证条件, 整数(下拉选择数字)、序列(下拉选择指定序列内容,但是这...
  • shenck1992
  • shenck1992
  • 2015年07月11日 13:19
  • 2160

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

用NPOI操作EXCEL--生成下拉列表      设置步骤为: (1)选定一个要生成下拉列表的区域; (2)设置数据有效性为序列,并在来源中填充可选下拉的值,用“,”隔开(如图)。 ...
  • lai124793549
  • lai124793549
  • 2014年09月09日 01:50
  • 1589

poi创建excel文件时,生成单元格下拉选

最近在项目中使用poi创建excel文件时,需要生成单元格下拉选。 下面是一个demo,注释比较清楚,以此参考。 package poi; import java.io.FileOutpu...
  • cw1112
  • cw1112
  • 2016年10月19日 10:38
  • 198

ooalv设置单元格下拉

在编辑ooalv的时候,有写单元格的值是一些固定的值,比如借贷标 识S,H,此时可以设置单元格的属性为下拉。...
  • u011576750
  • u011576750
  • 2016年11月17日 14:08
  • 162

NOPI复杂Excel生成和读取操作,带各种例子代码

  • 2017年10月12日 21:23
  • 3.07MB
  • 下载

NPOI取得Excel 的最后一行和最后一列

//根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档                 FileStream file = new FileStream("C:\te...
  • bigheadsheep
  • bigheadsheep
  • 2012年07月03日 11:10
  • 8391

NPOI,将单元格的值转换为字符串

NPOI,读取Excel单元格,返回字符串
  • cloudmonster
  • cloudmonster
  • 2016年03月17日 13:23
  • 1328

POI设置单元格内容下拉框选择和单元格提示功能

Excel设置单元格内容下拉框选择和单元格提示功能 ,效果图如下:   本文实例是对poi方法进行了进一步封装,封装后的方法使用起来更方便....
  • lk_blog
  • lk_blog
  • 2012年02月05日 14:43
  • 13752

NPOI之Excel——自动筛选、数字格式

设置Excel的自动筛选功能 最新导出数据需要使用Excel的筛选功能,网上多方查找,终于在一个繁体的网站上找到了方法,呃,这个网站还是Java的,讲的是POI,不过.NET的NPOI也就一样用...
  • u011981242
  • u011981242
  • 2016年01月14日 11:53
  • 1123

用NPOI操作EXCEL--画线

之所有说NPOI强大,是因为常用的Excel操作她都可以通过编程的方式完成。这节开始,我们开始学习NPOI的画图功能。先从最简单的开始,画一条直线: 对应的代码为: HSSFSheet...
  • ITX2000
  • ITX2000
  • 2017年07月25日 14:42
  • 201
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用NPOI操作Excel时,给一列所有的单元格加上下拉框的输入限制
举报原因:
原因补充:

(最多只允许输入30个字)