Arbeta med datavalidering
Arbeta med datavalidering
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation och ValidationCollection Klasser - Den WorkbookValidator Klassen ger en förskottsbevarande konsistenscheck.
Lägg till en valideringsregel
Gå till valideringsmallen för ett arbetsblad och lägg till en ny regel med hjälp av ValidationCollection::Add().Ställ in typ, formel och målområde på den returnerade Validation Objektet är:
#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;
}Valideringstyper
Den ValidationType Förteckningen definierar de typer av begränsningar som kan tillämpas:
| ValidationType | Beskrivning |
|---|---|
WholeNumber | Innehållsvärde begränsat |
Decimal | Floating-punkten begränsas |
List | Drop-down list från en formel eller sortiment |
Date | Datum värde begränsas |
TextLength | Sträng längd begränsning |
Custom | Formelbaserad standardregler |
Varningsstil
Den ValidationAlertType listan kontrollerar beteendet som visas när valideringen misslyckas:
| AlertStyle | Behavior |
|---|---|
Stop | Blockerar inmatning och visar en feldialog |
Warning | Visa en varning; användaren kan acceptera eller avvisa |
Information | Visa ett informationsverktyg |
Ställ in alert style med Validation::SetAlertStyle(ValidationAlertType).
Sök validering i en cell
Användning ValidationCollection::GetValidationInCell(row, col) att ta reda på vilken valideringsregel som gäller för en viss cell. nullptr Om inga regler gäller.
Avskaffande Valideringsregler
Ta bort en validering från ett visst cellt eller intervallet:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Försäljning av Workbook Validation
Call WorkbookValidator::ValidateForSave att köra en konsistenscheck på arbetsbokmodellen innan spara. Detta kallas automatiskt för Workbook::Save Men kan inbjudas oberoende under utveckling:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Tips och bästa praxis
- Alltid sätta båda
SetFormula1ochSetFormula2för validering av typ (WholeNumber,Decimal,Date1) att definiera de nedre och övre gränserna. - Användning
SetIgnoreBlank(true)tillåta tomma celler att passera validering utan att utlösa ett fel. - Call
ValidationCollection::AreasOverlapinnan du lägger till en ny regel för att kontrollera om valideringsområden överlappar på samma blad. WorkbookValidator::ValidateForSavekallas internalt på spara; uppmanar det under utveckling att fånga problem tidigt.
Vanliga frågor
| Issue | Cause | Fixar |
|---|---|---|
| Validering som inte tillämpas på cellerna | Område inte läggs till | Call Validation::AddArea(area) med målsidan |
| Drop-down inte visar | SetInCellDropDown(false) | Setade SetInCellDropDown(true) För listvalidering |
| Regler överlappar | Två regler som täcker samma celler | Användning AreasOverlap Att upptäcka och lösa konflikter |
| ValidateForSave misslyckas | Modellkonjunktur | Övervaka och fixa rapporterade oenighet innan spara |
API Referens sammanfattning
| Klass / Metod | Beskrivning |
|---|---|
ValidationCollection::Add() | Lägg till en ny tom valideringsregel |
ValidationCollection::GetValidationInCell(row, col) | Hitta validering för en cell |
ValidationCollection::RemoveArea(area) | Ta bort validering från ett sortiment |
ValidationCollection::RemoveACell(row, col) | Ta bort validering från en cell |
ValidationCollection::AreasOverlap | Kontrollera överlappande valideringsområden |
Validation::SetType(ValidationType) | Ställ in valideringstypen |
Validation::SetFormula1(expr) | Ställ in lägre gränsen eller listkälla |
Validation::SetFormula2(expr) | Uppe länk |
Validation::AddArea(area) | Applicera regeln till en ränta |
Validation::RemoveArea(area) | Ta bort regeln från en runda |
Validation::SetAlertStyle(style) | Ställ in stopp/varning/information beteende |
WorkbookValidator::ValidateForSave | Försäljning konsistenscheck |