Работа с валидиране на данни
Работа с валидиране на данни
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 | Описание на състоянието |
|---|---|
WholeNumber | Ограничение на цялостна стойност |
Decimal | Ограничение с плаваща точка |
List | Списък на изтегляне от формула или диапазон |
Date | Ограничение на стойността за датата |
TextLength | Ограничение на дължината на струните |
Custom | Правило за митническия режим, основано на формула |
Стил на предупреждение
Съветът на ЕС ValidationAlertType Изброяване контролира поведението, показвано при неуспешен валидиране:
| AlertStyle | Поведение |
|---|---|
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)
Валидиране на работната книга преди съхранение
Обади се. WorkbookValidator::ValidateForSave да провери съответствието на модела на работната книга преди съхранение. Това се нарича автоматично от Workbook::Save но може да се използва самостоятелно по време на разработването:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Съвети и най-добри практики
- Винаги поставя и двете.
SetFormula1и в)SetFormula2за валидиране на диапазона (WholeNumber,Decimal,Date) за определяне на долната и горната граница. - Използване на:
SetIgnoreBlank(true)да позволи на празни клетки да преминат валидирането, без да се предизвика грешка. - Обади се.
ValidationCollection::AreasOverlapпреди добавянето на ново правило за проверка на припокриване на областите за валидиране в същия лист. WorkbookValidator::ValidateForSaveсе повиква вътрешно при запазване; извикайте го по време на разработването, за да откриете проблеми рано.
Общи проблеми
| Издание | Причина за това | Ремонтиране |
|---|---|---|
| Валидиране не се прилага за клетка | Площ, която не е добавена | Обади се. Validation::AddArea(area) с целевия диапазон |
| Не се показва разпределяне | SetInCellDropDown(false) | Настройка SetInCellDropDown(true) за валидиране на списъците |
| Правила за припокриване | Две правила обхващат една и съща клетка. | Използване на: AreasOverlap да открива и разрешава конфликти; |
| ValidateForSave не работи | Несъответствие на модела | Прегледайте и поправете съобщената несъответствие преди съхранение. |
Снимка на API референтна информация
| Клас/метод | Описание на състоянието |
|---|---|
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 | Проверка на съгласуваността преди съхранение |