Як працювати з перевіркою даних у .NET
Aspose.Cells FOSS для .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 після збереження. Ensure InCellDropDown = true встановлено на Validation об’єкт перед збереженням. Випадаючий список видно в Excel лише коли цей прапорець true and ValidationType.List використовується.
Перевірка дозволяє значення поза визначеним діапазоном. Перевірка застосовується Excel, а не бібліотекою. Встановлення правил перевірки не запобігає самій бібліотеці записувати будь-яке значення в клітинку. Перевірка застосовується, коли користувач вводить дані в Excel.
Formula1 для перевірки списку відображається як #NAME? в Excel. Для вбудованого списку, розділеного комами, обгорніть рядок у екрановані лапки: Formula1 = "\"Option1,Option2,Option3\"". Без внутрішніх лапок Excel розглядає значення як формулу посилання на клітинку.
OperatorType.Between не застосовується правильно. Переконайтеся, що обидва Formula1 (minimum) і Formula2 (maximum) встановлені як рядки. Відсутність Formula2 for Between залишає верхню межу невизначеною.
Поширені запитання
Чи можу я виконувати валідацію щодо діапазону клітинок (наприклад, іменованого діапазону)?
Встановіть Formula1 як посилання на діапазон клітинок, наприклад "Sheet2!$A$1:$A$10". Значення в цьому діапазоні будуть використані як джерело для випадаючого списку.
Чи запобігає валідація бібліотеці записувати недійсні значення?
Ні. Правила валідації застосовуються в Excel, коли користувач вводить дані. Бібліотека Aspose.Cells FOSS не застосовує валідацію, коли ви програмно викликаєте Cell.PutValue().
Як видалити правило валідації?
Отримайте доступ до правила через Worksheet.Validations[index] і використовуйте операції ValidationCollection для керування правилами. Альтернативно, створіть нову модель книги без небажаних правил.
Яка максимальна кількість валідацій на лист?
Формат XLSX підтримує до 65,530 правил валідації на аркуш.