Werken met gegevensvalidatie

Werken met gegevensvalidatie

Werken met gegevensvalidatie

Aspose.Cells FOSS voor C++ ondersteunt het toevoegen van cel-niveau gegevensvalidatieregels aan werkbladen via de Validation en ValidationCollection klassen. De WorkbookValidator klasse biedt een pre-save consistentiecontrole.


Een validatieregel toevoegen

Toegang krijgen tot de validatiecollectie voor een werkblad en een nieuwe regel toevoegen met behulp van ValidationCollection::Add(). Stel het type, de formule en het doelgebied in op het geretourneerde Validation object:

#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;
}

Validatietypen

De ValidationType enumeratie definieert de soorten beperkingen die kunnen worden toegepast:

ValidationTypeBeschrijving
WholeNumberInteger-waardebeperking
DecimalFloating-point-beperking
ListDrop-downlijst op basis van een formule of bereik
DateDatumwaardebeperking
TextLengthStringlengtebeperking
CustomFormulegebaseerde aangepaste regel

Waarschuwingsstijl

De ValidationAlertType enumeratie bepaalt het gedrag dat wordt getoond wanneer de validatie mislukt:

AlertStyleBehavior
StopBlokkeert invoer en toont een foutdialoog
WarningToont een waarschuwing; gebruiker kan accepteren of afwijzen
InformationToont een informatieve tooltip

Stel de waarschuwingsstijl in met Validation::SetAlertStyle(ValidationAlertType).


Validatie opvragen in een cel

Gebruik ValidationCollection::GetValidationInCell(row, col) om te vinden welke validatieregel van toepassing is op een specifieke cel. Retourneert nullptr als er geen regel van toepassing is.


Validatieregels verwijderen

Verwijder een validatie van een specifieke cel of bereik:

CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)

Pre-Save Werkboekvalidatie

Roep WorkbookValidator::ValidateForSave aan om een consistentiecontrole op het werkboekmodel uit te voeren vóór het opslaan. Dit wordt automatisch aangeroepen door Workbook::Save, maar kan onafhankelijk worden aangeroepen tijdens de ontwikkeling:

WorkbookValidator validator;
validator.ValidateForSave(workbook);

Tips en best practices

  • Stel altijd zowel SetFormula1 als SetFormula2 in voor bereiktypevalidaties (WholeNumber, Decimal, Date) om de onder- en bovengrenzen te definiëren.
  • Gebruik SetIgnoreBlank(true) om lege cellen toe te staan de validatie te doorlopen zonder een fout te veroorzaken.
  • Roep ValidationCollection::AreasOverlap aan voordat je een nieuwe regel toevoegt om te controleren op overlappende validatiegebieden op hetzelfde blad.
  • WorkbookValidator::ValidateForSave wordt intern aangeroepen bij het opslaan; roep het aan tijdens de ontwikkeling om problemen vroegtijdig te detecteren.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Validatie niet toegepast op celGebied niet toegevoegdRoep Validation::AddArea(area) aan met het doelbereik
Drop-down wordt niet weergegevenSetInCellDropDown(false)Stel SetInCellDropDown(true) in voor lijstvalidaties
Regels overlappenTwee regels dekken dezelfde cellenGebruik AreasOverlap om conflicten te detecteren en op te lossen
ValidateForSave faaltModelinconsistentieControleer en herstel de gerapporteerde inconsistentie voordat u opslaat

API Reference Samenvatting

Klasse/MethodeBeschrijving
ValidationCollection::Add()Voeg een nieuwe lege validatieregel toe
ValidationCollection::GetValidationInCell(row, col)Zoek validatie voor een cel
ValidationCollection::RemoveArea(area)Verwijder validatie van een bereik
ValidationCollection::RemoveACell(row, col)Verwijder validatie uit een cel
ValidationCollection::AreasOverlapControleer op overlappende validatiegebieden
Validation::SetType(ValidationType)Stel het validatietype in
Validation::SetFormula1(expr)Stel ondergrens of lijstbron in
Validation::SetFormula2(expr)Stel bovengrens in
Validation::AddArea(area)Pas de regel toe op een bereik
Validation::RemoveArea(area)Verwijder de regel uit een bereik
Validation::SetAlertStyle(style)Stel stop-/waarschuwing-/informatiegedrag in
WorkbookValidator::ValidateForSavePre-save consistentiecontrole

Zie ook

 Nederlands