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:
| ValidationType | Beschrijving |
|---|---|
WholeNumber | Integer-waardebeperking |
Decimal | Floating-point-beperking |
List | Drop-downlijst op basis van een formule of bereik |
Date | Datumwaardebeperking |
TextLength | Stringlengtebeperking |
Custom | Formulegebaseerde aangepaste regel |
Waarschuwingsstijl
De ValidationAlertType enumeratie bepaalt het gedrag dat wordt getoond wanneer de validatie mislukt:
| AlertStyle | Behavior |
|---|---|
Stop | Blokkeert invoer en toont een foutdialoog |
Warning | Toont een waarschuwing; gebruiker kan accepteren of afwijzen |
Information | Toont 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
SetFormula1alsSetFormula2in 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::AreasOverlapaan voordat je een nieuwe regel toevoegt om te controleren op overlappende validatiegebieden op hetzelfde blad. WorkbookValidator::ValidateForSavewordt intern aangeroepen bij het opslaan; roep het aan tijdens de ontwikkeling om problemen vroegtijdig te detecteren.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Validatie niet toegepast op cel | Gebied niet toegevoegd | Roep Validation::AddArea(area) aan met het doelbereik |
| Drop-down wordt niet weergegeven | SetInCellDropDown(false) | Stel SetInCellDropDown(true) in voor lijstvalidaties |
| Regels overlappen | Twee regels dekken dezelfde cellen | Gebruik AreasOverlap om conflicten te detecteren en op te lossen |
| ValidateForSave faalt | Modelinconsistentie | Controleer en herstel de gerapporteerde inconsistentie voordat u opslaat |
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
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::AreasOverlap | Controleer 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::ValidateForSave | Pre-save consistentiecontrole |