Як працювати з перевіркою даних у .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 (мінімум), так і Formula2 (максимум) встановлені як рядки. Відсутність Formula2 для Between залишає верхню межу невизначеною.
Поширені запитання
Чи можу я здійснювати перевірку проти діапазону клітинок (наприклад, іменованого діапазону)?
Встановіть Formula1 як посилання на діапазон клітинок, наприклад "Sheet2!$A$1:$A$10". Значення в цьому діапазоні будуть використані як джерело списку випадаючих значень.
Чи запобігає валідація бібліотеці записувати недійсні значення?
Ні. Правила валідації застосовуються Excel, коли користувач вводить дані. Бібліотека Aspose.Cells FOSS не застосовує валідацію, коли ви викликаєте Cell.PutValue() програмно.
Як я можу видалити правило валідації?
Отримайте доступ до правила через Worksheet.Validations[index] і використовуйте операції ValidationCollection для керування правилами. Альтернативно створіть нову модель робочої книги без небажаних правил.
Яка максимальна кількість валідацій на лист?
Формат XLSX підтримує до 65,530 правил перевірки на аркуш.