Работа с Валидацией в Рабочих Листах
Режимы Валидации
Aspose.Cells.GridDesktop поддерживает три режима валидации, как показано ниже:
- Режим Валидации Обязательного Заполнения
- Режим Валидации по Регулярным Выражениям
- Пользовательский Режим Валидации
Режим Валидации Обязательного Заполнения
В этом режиме валидации пользователи ограничены вводить значения в определенные ячейки. После применения Режима Валидации Обязательного Заполнения к ячейке рабочего листа, пользователю необходимо ввести значение в эту ячейку.
Режим Валидации по Регулярным Выражениям
В этом режиме на ячейки рабочего листа накладываются ограничения на пользователей для ввода данных в определенном формате. Шаблон формата данных предоставляется в виде Регулярного Выражения.
Пользовательский Режим Валидации
Для использования Пользовательской Валидации разработчики должны реализовать интерфейс Aspose.Cells.GridDesktop.ICustomValidation. Интерфейс предоставляет метод Validate. Этот метод возвращает true, если данные допустимы, в противном случае возвращает false.
Работа с Валидацией в Aspose.Cells.GridDesktop
Добавление Валидации
Чтобы добавить любую валидацию к ячейке рабочего листа, выполните следующие действия:
- Добавьте элемент управления Aspose.Cells.GridDesktop на ваш Форм
- Получить доступ к любому желаемому Рабочему листу
- Добавить желаемую проверку в коллекцию Проверок для Рабочего листа, чтобы указать, какая проверка будет применяться к какой ячейке.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing first worksheet of the Grid | |
Worksheet sheet = gridDesktop1.Worksheets[0]; | |
// Adding values to specific cells of the worksheet | |
sheet.Cells["a2"].Value = "Required"; | |
sheet.Cells["a4"].Value = "100"; | |
sheet.Cells["a6"].Value = "2006-07-21"; | |
sheet.Cells["a8"].Value = "101.2"; | |
// Adding Is Required Validation to a cell | |
sheet.Validations.Add("a2", true, ""); | |
// Adding simple Regular Expression Validation to a cell | |
sheet.Validations.Add("a4", true, @"\d+"); | |
// Adding complex Regular Expression Validation to a cell | |
sheet.Validations.Add("a6", true, @"\d{4}-\d{2}-\d{2}"); | |
// Adding Custom Validation to a cell | |
sheet.Validations.Add("a8", new CustomValidation()); |
Реализация ICustomValidation
В приведенном выше отрывке кода мы добавили пользовательскую проверку в ячейке A8, но еще не реализовали эту пользовательскую проверку. Как мы объяснили в начале этой темы, для применения пользовательской проверки необходимо реализовать интерфейс ICustomValidation. Так что давайте попробуем создать класс для реализации интерфейса ICustomValidation.
В приведенном ниже отрывке кода мы реализовали пользовательскую проверку для выполнения следующих проверок:
- Проверить правильность адреса ячейки, в которой добавлена проверка
- Проверить, является ли тип данных значения ячейки двойным
- Проверить, является ли значение ячейки большим, чем 100
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Implementing ICustomValidation interface | |
public class CustomValidation : Aspose.Cells.GridDesktop.ICustomValidation | |
{ | |
// Implementing Validate method already defined in the interface | |
public bool Validate(Worksheet worksheet, int row, int col, object value) | |
{ | |
// Checking the cell's address | |
if (row == 7 && col == 0) | |
{ | |
//Checking the data type of cell's value | |
double d = 0; | |
try | |
{ | |
d = (double)value; | |
} | |
catch | |
{ | |
return false; | |
} | |
// Checking if the cell's value is greater than 100 | |
if (d > 100) | |
return true; | |
} | |
return false; | |
} | |
} |
Доступ к проверке
Как только проверка добавлена к конкретной ячейке рабочего листа, разработчикам может потребоваться получить доступ и изменить атрибуты конкретной проверки во время выполнения. Таким образом, Aspose.Cells.GridDesktop упростил разработчикам выполнение этой задачи.
Чтобы получить доступ к конкретной проверке, следуйте указанным ниже шагам:
- Получите доступ к желаемому Рабочему листу
- Получите доступ к конкретной Проверке на рабочем листе, указав имя ячейки, на которой была применена проверка
- Измените атрибуты Проверки, если необходимо
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing first worksheet of the Grid | |
Worksheet sheet = gridDesktop1.Worksheets[0]; | |
if (sheet.Validations.Count > 0) | |
{ | |
// Accessing the Validation object applied on "a8" cell | |
Aspose.Cells.GridDesktop.Data.GridValidation validation = sheet.Validations[7, 0]; | |
// Editing the attributes of Validation | |
validation.IsRequired = true; | |
validation.RegEx = ""; | |
validation.CustomValidation = null; | |
MessageBox.Show("Validation has been edited after accessing it."); | |
} | |
else | |
{ | |
MessageBox.Show("No validations found to access."); | |
} |
Удаление проверки
Чтобы удалить конкретную проверку с рабочего листа, следуйте указанным ниже шагам:
- Получите доступ к желаемому Рабочему листу
- Удалите конкретную Проверку с Рабочего листа, указав имя ячейки, на которой была применена проверка
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing first worksheet of the Grid | |
Worksheet sheet = gridDesktop1.Worksheets[0]; | |
if (sheet.Validations.Count > 0) | |
{ | |
// Removing the Validation object applied on "a6" cell | |
sheet.Validations.RemoveAt(1); | |
MessageBox.Show("Validation has been removed."); | |
} | |
else | |
{ | |
MessageBox.Show("No validations found to remove."); | |
} |