Робота з валідацією даних
Робота з валідацією даних
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation і ValidationCollection Збірні. WorkbookValidator клас забезпечує перевірку сумісності перед збереженням.
Додавання правила підтвердження
Доступ до колекції підтвердження для таблиці і додати нове правило з використанням: ValidationCollection::Add().Назначити тип, формулу та цільову площу на поверненому файлі. Validation об’єкт:
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/ValidationCollection.h"
#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInCellDropDown(false);
v.SetInputTitle("Enter Value");
v.SetInputMessage("Value must be between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value is out of range.");
v.SetShowInput(true);
v.SetShowError(true);
CellArea area = CellArea::CreateCellArea("B2", "B10");
v.AddArea(area);
workbook.Save("validated.xlsx");
return 0;
}Типи валідації
У. ValidationType перелік визначає види обмежень, які можуть застосовуватися:
| ValidationType | Description |
|---|---|
WholeNumber | Обмеження цілісної величини |
Decimal | Обмеження з плаваючою точкою |
List | Список з формули або діапазону |
Date | Обов’язковий значення дати |
TextLength | Обмеження довжини струмок |
Custom | Зазвичай правило, засноване на формулі. |
Стіль попередження
У. ValidationAlertType перерахування контролює поведінку, що відображається при невдачі валідації:
| AlertStyle | Behavior |
|---|---|
Stop | Захоплює вхід і показує діалог помилок |
Warning | Показ попередження; користувач може прийняти або відхилити. |
Information | Показано інформаційне інструментальне засібник |
Натисніть стиль попередження з: Validation::SetAlertStyle(ValidationAlertType).
Запитання про підтвердження в клітині
Використання ValidationCollection::GetValidationInCell(row, col) щоб знайти, яке правило підтвердження застосовується до конкретної ячейки. Повертає nullptr якщо не застосовується жодне правило.
Видалення правил валідації
Видалення валідації з певної клітини або області діапазону:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Перевірка перед збереженням робочого книжки
Call WorkbookValidator::ValidateForSave для виконання перевірки консистенції моделі робочої книжки перед збереженням. Це автоматично викликається за допомогою Workbook::Save але можуть бути використані самостійно під час розробки:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Поради та найкращі практики
- Завжди встановлюйте обидві.
SetFormula1іSetFormula2для валідації типу діапазону (WholeNumber,Decimal,Date) для визначення нижньої та верхньої межі. - Використання
SetIgnoreBlank(true)дозволити порожнім ячейкам пройти перевірку без викликання помилки. - Call
ValidationCollection::AreasOverlapперед додаванням нового правила для перевірки накладання зон валідації на одному листі. WorkbookValidator::ValidateForSaveвикликається внутрішньо при збереженні; закличуть його під час розробки, щоб рано виявити проблеми.
Загальні питання
| Issue | Cause | Виправлення |
|---|---|---|
| Валідація не застосовується до клітини. | Не додана площ | Call Validation::AddArea(area) з цільовим діапазоном |
| Не відображається розгорнутий список | SetInCellDropDown(false) | Набір SetInCellDropDown(true) для перевірки списку |
| Перетинаються правила | Два правила охоплюють однакові ячейки. | Використання AreasOverlap виявлення та вирішення конфліктів; |
| Не вдалося ввести ValidateForSave | Невідповідність моделі | Переглянути і виправити повідомлену невідповідність перед збереженням. |
Реферат на API
| Клас/метод | Description |
|---|---|
ValidationCollection::Add() | Додати нове правило валідації . |
ValidationCollection::GetValidationInCell(row, col) | Знайти підтвердження для клітини |
ValidationCollection::RemoveArea(area) | Видалення валідації з діапазону |
ValidationCollection::RemoveACell(row, col) | Видалення підтвердження з клітини |
ValidationCollection::AreasOverlap | Перевірка наявності перекриваються зон валідації |
Validation::SetType(ValidationType) | Назначення типу валідації |
Validation::SetFormula1(expr) | Назначення нижньої межі або джерела списку |
Validation::SetFormula2(expr) | Назначення верхньої межі |
Validation::AddArea(area) | Прикласти правило до діапазону. |
Validation::RemoveArea(area) | Видалення правила з діапазону |
Validation::SetAlertStyle(style) | Поведіння при встановленні стоп/попередження/інформація |
WorkbookValidator::ValidateForSave | Перевірка сумісності перед збереженням |