如何在使用NPOI创build的Excel中为单元格设置validation

我使用以下代码创build了一个使用NPOI的excell文件

  var workbook = new HSSFWorkbook(); var sheet = workbook.CreateSheet("Candidate"); // Add header labels var rowIndex = 0; var row = sheet.CreateRow(rowIndex); row.CreateCell(0).SetCellValue("Name"); row.CreateCell(1).SetCellValue("1,2,3"); row.CreateCell(2).SetCellValue("4,5,6"); row.CreateCell(3).SetCellValue("7,8,9"); rowIndex++; // Add data rows for (int i = 1; i <= 5; i++) { row = sheet.CreateRow(rowIndex); row.CreateCell(0).SetCellValue("Candidate" + i.ToString()); row.CreateCell(1).SetCellValue(""); row.CreateCell(2).SetCellValue(""); row.CreateCell(3).SetCellValue(""); rowIndex++; } 

我只是想在每个单元格中添加一些validation。 例如: restrict cell 2 with inputs only 1,2,3

Excel we can Set Data Validationwhole number并可以specify Min and Max Value

任何想法实现这将是一个很大的帮助。

我发现这一点,并与以下代码大大工作。

  var markConstraint = DVConstraint.CreateExplicitListConstraint(new string[]{"1","2","3"}); var markColumn = new CellRangeAddressList(1, 5, 1, 1); var markdv = new HSSFDataValidation(markColumn, markConstraint); markdv.EmptyCellAllowed = true; markdv.CreateErrorBox("Wrong Value", "Please Enter a correct value"); sheet.AddValidationData(markdv); 

试试这个例子

 XSSFDataValidation dataValidation = null; XSSFDataValidationConstraint dvConstraint = null; XSSFDataValidationHelper validationHelper = null; int DVRowLimit = (Int16.MaxValue); XSSFCellStyle numberCellStyle = (XSSFCellStyle)workbook.CreateCellStyle(); XSSFDataFormat numberDataFormat = (XSSFDataFormat)workbook.CreateDataFormat(); numberCellStyle.SetDataFormat(numberDataFormat.GetFormat("#,###,###")); CellRangeAddressList cellRangeFieldsType1 = new CellRangeAddressList(1, DVRowLimit, headerCount, headerCount); dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateintConstraint(OperatorType.BETWEEN, "0", Int64.MaxValue.ToString()); dataValidation = (XSSFDataValidation)validationHelper.CreateValidation(dvConstraint, cellRangeFieldsType1); dataValidation.ShowErrorBox = true; dataValidation.SuppressDropDownArrow = true; dataValidation.ErrorStyle = 0; dataValidation.CreateErrorBox("InvalidValue", "Number Should be a integer."); dataValidation.ShowErrorBox = true; dataValidation.CreatePromptBox("Number Data Validation", "Enter Number."); dataValidation.ShowPromptBox = true; sheet.AddValidationData(dataValidation); sheet.SetDefaultColumnStyle(column, numberCellStyle); 

同样的范围validation尝试

  dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateintConstraint(OperatorType.BETWEEN, "0", "10"); 

我已经将类似的例子整理成NPOI的文档。 它涵盖了各种types的数据validation和约束。 文档还包括约束的总字符数超过255个字符的情况。