Работа с проверкой данных
Работа с проверкой данных
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 | Проверка согласованности до сохранения |