使用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) ) );




            
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

apache POI3.2 java操作excel 设置数据有效性,实现excel单元格列表和提示

手工设置: excel菜单栏上--数据--有效性--允许--序列, excel菜单栏上--数据--有效性--输入信息. 程序现实: 首先,http://poi.apache.org/官方下载P...

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

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

NPOI之Excel——合并单元格、设置样式、输入公式

首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容:   //建立空白工作簿 IWorkbook workbook = new HSSFW...

NPOI操作Excel,NPOI画较复杂表格和设置其单元格格式

在最近的项目中,又使用了NPOI把数据导出到Excel,发现新版的使用方法和旧版的还是有些区别,而且貌似新版NPOI功能更强大了,在这个项目里面,主要遇到了两个问题,最后成功解决了,那么下面的也就是列...

NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

我用的版本是1.25的。每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel;...
  • xhccom
  • xhccom
  • 2012-06-24 10:49
  • 11331

NPOI2.2.0.0实例详解(三)—设置EXCEL列宽、行高与合并单元格

设置EXCEL列宽、行高与合并单元格

NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】

设置EXCEL单元格【文本格式】

NPOI2.2.0.0实例详解(五)—设置EXCEL单元格背景与图案

设置EXCEL单元格背景与图案
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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