Как да работим с проверка на данни в .NET

Как да работим с проверка на данни в .NET

Aspose.Cells FOSS for .NET ви позволява да добавяте правила за проверка на данни към диапазони от клетки чрез Worksheet.Validations (ValidationCollection). Извикайте Add(CellArea), за да създадете обект Validation и задайте неговия Type, използвайки ValidationType. Поддържани типове включват List, Decimal и Custom. Инсталирайте с dotnet add package Aspose.Cells_FOSS.

Ръководство стъпка по стъпка

Стъпка 1: Инсталирайте пакета

dotnet add package Aspose.Cells_FOSS

Стъпка 2: Импортиране на пространството от имена

using Aspose.Cells_FOSS;

Стъпка 3: Добавете проверка за падащ списък

Създайте CellArea с CellArea.CreateCellArea(), добавете го към Worksheet.Validations и задайте ValidationType.List със списък, разделен със запетая, в Formula1.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Dropdown list for A1:A10
var listVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A1", "A10"))];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,In Progress,Closed\"";
listVal.InCellDropDown = true;
listVal.IgnoreBlank = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Choose a status from the dropdown";

wb.Save("list-validation.xlsx");
Console.WriteLine("List validation added.");

Стъпка 4: Добавете проверка за числов диапазон

Използвайте ValidationType.Decimal с OperatorType.Between и Formula1/Formula2 за ограничаване на числовия вход.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Decimal range validation for B1:B10 — allow 0 to 100
var numVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B1", "B10"))];
numVal.Type = ValidationType.Decimal;
numVal.Operator = OperatorType.Between;
numVal.Formula1 = "0";
numVal.Formula2 = "100";
numVal.ErrorTitle = "Out of Range";
numVal.ErrorMessage = "Please enter a number between 0 and 100.";
numVal.ShowError = true;
numVal.IgnoreBlank = true;

wb.Save("decimal-validation.xlsx");
Console.WriteLine("Decimal validation added.");

Стъпка 5: Комбиниране на множество проверки в един и същи лист

Можете да добавите колкото искате проверки към същия лист, като извикате Validations.Add() многократно, всяка с различен CellArea.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// List validation for column A (status)
var statusVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A2", "A100"))];
statusVal.Type = ValidationType.List;
statusVal.Formula1 = "\"New,Open,Closed\"";
statusVal.InCellDropDown = true;

// Decimal validation for column B (score)
var scoreVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B2", "B100"))];
scoreVal.Type = ValidationType.Decimal;
scoreVal.Operator = OperatorType.Between;
scoreVal.Formula1 = "0";
scoreVal.Formula2 = "10";
scoreVal.ShowError = true;

wb.Save("combined-validation.xlsx");
Console.WriteLine("Combined validations added to sheet.");

Чести проблеми и решения

Падащото меню не се появява в Excel след запазване.
Уверете се, че InCellDropDown = true е зададено на обекта Validation преди запазване. Падащото меню е видимо в Excel само когато този флаг е true и се използва ValidationType.List.

Валидацията позволява стойности извън дефинирания диапазон.
Валидацията се налага от Excel, а не от библиотеката. Задаването на правила за валидация не пречи на самата библиотека да записва каквато и да е стойност в клетката. Валидацията се прилага, когато потребител въведе данни в Excel.

Formula1 за проверка на списък се показва като #NAME? в Excel.
За списък, разделен със запетая в един ред, оградете низа в избягвани кавички: Formula1 = "\"Option1,Option2,Option3\"". Без вътрешните кавички Excel третира стойността като формула за препратка към клетка.

OperatorType.Between не се прилага правилно.
Уверете се, че както Formula1 (minimum), така и Formula2 (maximum) са зададени като низове. Липсващият Formula2 за Between оставя горната граница неопределена.

Често задавани въпроси

Мога ли да валидирам спрямо диапазон от клетки (например именуван диапазон)?

Задайте Formula1 като препратка към диапазон от клетки, например "Sheet2!$A$1:$A$10". Стойностите в този диапазон ще се използват като източник за падащия списък.

Предотвратява ли валидирането библиотеката от записване на невалидни стойности?

Не. Правилата за валидиране се прилагат от Excel, когато потребителят въвежда данни. Библиотеката Aspose.Cells FOSS не прилага валидиране, когато извикате Cell.PutValue() програмно.

Как да премахна правило за валидиране?

Достъпете правилото чрез Worksheet.Validations[index] и използвайте операции ValidationCollection за управление на правилата. Алтернативно, създайте нов модел на работна книга без нежеланите правила.

Какъв е максималният брой валидации на лист?

Форматът XLSX поддържа до 65,530 правила за проверка на работен лист.

Вижте още

 Български