Skip to main content

Data Validation

  • 4 minutes to read

This document introduces the Data Validation concept and demonstrates how to manage data validation rules in a worksheet using the Data Validation API.

DataValidation

Data Validation Overview

Data validation allows you to restrict data that can be entered into a cell. It assists the users in entering data that is valid. You can allow end-users to enter invalid data, but then warn them when that occurs. You can also provide messages to explain the reason for the restriction or to instruct users how to correct errors.

End-users are provided with the Data Tools command group located on the Data Ribbon tab to invoke a Data Validation dialog and to identify cells with invalid data by displaying a red circle around them.

DataValidationRibbon

When a user attempts to enter a value that is not correct according to validation rules, an alert is shown. Alert text is specified with the ASPxSpreadsheetStringId.DataValidation enumeration member so it can be easily localized, as described in the Localization topic.

You can also provide a custom message that explains what data can be entered in a cell, and a custom error dialog that appears when incorrect data is entered.

Data Validation API

The DataValidation interface provides information describing the data validation rule - the DataValidation.Range in which the rule is in effect, the DataValidation.ValidationType and other options which can be used while validating data.

Data validation rules in a worksheet are contained in the DataValidationCollection collection, which is accessible using the Worksheet.DataValidations property.

To add a new data validation rule, use the DataValidationCollection.Add method of the collection. To cancel a rule, remove it from the collection. To remove all data validation rules, clear the collection.

Data Validation Common Tasks

Task

API Members

User Interface

Restrict data to predefined items on a list.

DataValidationType.List

Dv_DropDownList_Worksheet

Restrict numbers outside a specified range.

DataValidationType.WholeNumber

DataValidationType.Decimal

DataValidationOperator.Between

DV_WholeNumberFrom10To20

Restrict dates and times outside a certain time frame.

DataValidationType.Time

DataValidationOperator.LessThanOrEqual

DV_DateTimeNow

Limit the number of text characters.

DataValidationType.TextLength

DataValidationOperator.Equal

DV_TextLength

Validate data based on formulas or values in other cells.

DataValidationType.Custom

DV_CalculatedCriteria

Create a message that explains what data can be entered in a cell.

DataValidation.InputTitle

DataValidation.InputMessage

DataValidation.ShowInputMessage

DV_ShowInputMessage_Dialog

Create a message that appears when the end-user types incorrect data.

DataValidation.ErrorTitle

DataValidation.ErrorMessage

DataValidation.ErrorStyle

DataValidation.ShowErrorMessage

DV_ShowErrorMessage_Dialog

The code snippet below illustrates how to create and apply different validation criteria to worksheet cells using Data Validation API.

View Example

workbook.LoadDocument("Documents\\DataValidation.xlsx");
Worksheet worksheet = workbook.Worksheets[0];
worksheet["C1"].SetValue(DateTime.Now);
worksheet["C1"].NumberFormat = "mmm/d/yyyy h:mm";

// Restrict data entry to a whole number from 10 to 20.
worksheet.DataValidations.Add(worksheet["B1"], DataValidationType.WholeNumber, DataValidationOperator.Between, 10, 20);

// Restrict data entry to a number within limits.
DataValidation validation = worksheet.DataValidations.Add(worksheet["F4:F11"], DataValidationType.Decimal, DataValidationOperator.Between, 10, 40);

// Restrict data entry using criteria calculated by a worksheet formula.
worksheet.DataValidations.Add(worksheet["B4:B11"], DataValidationType.Custom, "=AND(ISNUMBER(B4),LEN(B4)=5)");

// Restrict data entry to 3 symbols.
worksheet.DataValidations.Add(worksheet["D4:D11"], DataValidationType.TextLength, DataValidationOperator.Equal, 3);

// Restrict data entry to values in a drop-down list specified in code. 
// Note that the list in code should always use comma to separate entries, 
// but the list in UI is displayed using culture-specific list separator.
worksheet.DataValidations.Add(worksheet["A4:A11"], DataValidationType.List, "PASS, FAIL");

// Restrict data entry to values in a drop-down list obtained from a worksheet.
worksheet.DataValidations.Add(worksheet["E4:E11"], DataValidationType.List, ValueObject.FromRange(worksheet["H4:H9"].GetRangeWithAbsoluteReference()));

// Restrict data entry to a time before the specified time.
worksheet.DataValidations.Add(worksheet["C1"], DataValidationType.Time, DataValidationOperator.LessThanOrEqual, DateTime.Now);

// Highlight data validation ranges.
worksheet["H4:H9"].FillColor = Color.LightGray;
int[] MyColorScheme = new int[] { 0xFFC4C4, 0xFFD9D9, 0xFFF6F6, 0xFFECEC, 0xE9D3D3, 0xFFDFC4, 0xFFDAE9};
for (int i = 0; i < worksheet.DataValidations.Count; i++){
    worksheet.DataValidations[i].Range.FillColor = Color.FromArgb(MyColorScheme[i]);
}
See Also