diff --git a/Document-Processing/Excel/Excel-Library/NET/Working-with-Data-Validation.md b/Document-Processing/Excel/Excel-Library/NET/Working-with-Data-Validation.md index 6bad358b2c..1f433f8250 100644 --- a/Document-Processing/Excel/Excel-Library/NET/Working-with-Data-Validation.md +++ b/Document-Processing/Excel/Excel-Library/NET/Working-with-Data-Validation.md @@ -632,3 +632,192 @@ End Using {% endtabs %} A complete working example to remove validations from a worksheet in C# is present on this GitHub page. + +## Create data validation efficiently + +The .NET Excel library allows data validation to be created directly for a cell or range using the `CreateDataValidation` API. This API improves performance, particularly when applying the same validation rule to multiple cells in a range. + +The `CreateDataValidation` API supports all validation types, including text length, time, list, number, date, and custom formula validation. + +The following code example shows how to create text length validation for a range of cells. + +{% tabs %} + +{% highlight c# tabtitle="C# [Cross-platform]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + + IWorkbook workbook = application.Workbooks.Create(1); + IWorksheet worksheet = workbook.Worksheets[0]; + + // Create text length validation for the specified range + IDataValidation validation = worksheet.CreateDataValidation(worksheet.Range["A1:A10"]); + + validation.AllowType = ExcelDataType.TextLength; + validation.CompareOperator = ExcelDataValidationComparisonOperator.Between; + validation.FirstFormula = "3"; + validation.SecondFormula = "15"; + + // Configure the validation error message + validation.ShowErrorBox = true; + validation.ErrorBoxTitle = "Invalid Input"; + validation.ErrorBoxText = "Text length must be between 3 and 15 characters."; + validation.PromptBoxText = "Data validation for text length"; + validation.ShowPromptBox = true; + + workbook.SaveAs(Path.GetFullPath("Output/TextLengthValidation.xlsx")); +} +{% endhighlight %} + +{% highlight c# tabtitle="C# [Windows-specific]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + + IWorkbook workbook = application.Workbooks.Create(1); + IWorksheet worksheet = workbook.Worksheets[0]; + + // Create text length validation for the specified range + IDataValidation validation = worksheet.CreateDataValidation(worksheet.Range["A1:A10"]); + + validation.AllowType = ExcelDataType.TextLength; + validation.CompareOperator = ExcelDataValidationComparisonOperator.Between; + validation.FirstFormula = "3"; + validation.SecondFormula = "15"; + + // Configure the validation error message + validation.ShowErrorBox = true; + validation.ErrorBoxTitle = "Invalid Input"; + validation.ErrorBoxText = "Text length must be between 3 and 15 characters."; + validation.PromptBoxText = "Data validation for text length"; + validation.ShowPromptBox = true; + + workbook.SaveAs("TextLengthValidation.xlsx"); +} +{% endhighlight %} + +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Using excelEngine As New ExcelEngine() + + Dim application As IApplication = excelEngine.Excel + application.DefaultVersion = ExcelVersion.Xlsx + + Dim workbook As IWorkbook = application.Workbooks.Create(1) + Dim worksheet As IWorksheet = workbook.Worksheets(0) + + ' Create text length validation for the specified range + Dim validation As IDataValidation = worksheet.CreateDataValidation(worksheet.Range("A1:A10")) + + validation.AllowType = ExcelDataType.TextLength + validation.CompareOperator = ExcelDataValidationComparisonOperator.Between + validation.FirstFormula = "3" + validation.SecondFormula = "15" + + ' Configure the validation error message + validation.ShowErrorBox = True + validation.ErrorBoxTitle = "Invalid Input" + validation.ErrorBoxText = "Text length must be between 3 and 15 characters." + validation.PromptBoxText = "Data validation for text length" + validation.ShowPromptBox = True + + workbook.SaveAs("TextLengthValidation.xlsx") +End Using +{% endhighlight %} +{% endtabs %} + +### Performance metrics for data validation + +The following benchmark measures the time required by the Syncfusion Excel (XlsIO) library to create and save an Excel workbook containing data validation rules. Each validation type is applied to 1,000,000 cells using the `CreateDataValidation` API. The measured validation types include text length, time, list, number, date, and custom formula. + +
| +Validation type + | ++Time taken (seconds) + | ++Sample link + | +
|---|---|---|
| +Text length + | ++1.407 + | ++GitHub link. + | +
| +Time + | ++1.426 + | ++GitHub link. + | +
| +List + | ++1.424 + | ++GitHub link. + | +
| +Number + | ++1.372 + | ++GitHub link. + | +
| +Date + | ++1.428 + | ++GitHub link. + | +
| +Custom formula + | ++1.402 + | ++GitHub link. + | +