Hoe voeg gegevensvalidatie toe aan een spreadsheet in C++
Aspose.Cells FOSS voor C++ ondersteunt cel-niveau gegevensvalidatieregels die beperken welke waarden gebruikers kunnen invoeren in specifieke cellen of bereiken. De Validation, ValidationCollection en WorkbookValidator klassen vormen de validatie API.
Stapsgewijze handleiding
Stap 1: De build opzetten
cmake_minimum_required(VERSION 3.15)
project(DataValidation CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(DataValidation main.cpp)
target_link_libraries(DataValidation PRIVATE Aspose.Cells.Foss.Cpp)Stap 2: Vereiste headerbestanden opnemen
#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;Stap 3: Toegang krijgen tot de validatiecollectie
Haal de ValidationCollection op uit het werkblad:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
return 0;
}Stap 4: Voeg een validatieregel toe
Roep ValidationCollection::Add() aan en configureer het geretourneerde Validation-object:
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInputTitle("Enter Quantity");
v.SetInputMessage("Enter a whole number between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value must be between 1 and 100.");
v.SetShowInput(true);
v.SetShowError(true);
v.SetAlertStyle(ValidationAlertType::Stop);Stap 5: Pas de regel toe op een bereik
Koppel de validatie aan een CellArea met behulp van Validation::AddArea:
CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);Stap 6: Sla de werkmap op
workbook.Save("validated.xlsx");
workbook.Dispose();Stap 7: Voer pre-savevalidatie uit (optioneel)
Roep WorkbookValidator::ValidateForSave aan tijdens de ontwikkeling om modelproblemen te detecteren vóór het opslaan:
WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");Veelvoorkomende problemen en oplossingen
Validatie niet zichtbaar in opgeslagen bestand Ensure Validation::AddArea(area) wordt aangeroepen na het configureren van de regel. Een regel zonder gekoppeld gebied wordt niet geserialiseerd.
Dropdownlijst wordt niet weergegeven Instellen v.SetInCellDropDown(true) en stel in v.SetType(ValidationType::List) with SetFormula1 wijst naar een bereik of door komma’s gescheiden waarden.
Overlapende validatiegebieden Gebruik ValidationCollection::AreasOverlap om conflicten te controleren voordat een nieuwe regel wordt toegevoegd. Overlappende regels kunnen onverwacht gedrag in Excel veroorzaken.
Invoermelding verschijnt niet Zorg ervoor dat beide SetShowInput(true) and SetInputMessage("...") zijn ingesteld. Een lege berichttekst onderdrukt de invoerprompt zelfs als SetShowInput(true) wordt aangeroepen.
ValidateForSave meldt fouten Bekijk de gerapporteerde inconsistentie. Veelvoorkomende oorzaken zijn ontbrekende formulegrenzen voor bereiktype-validaties en ongeldige celgebiedcoördinaten.
Veelgestelde vragen
Welke validatietypen worden ondersteund?
De ValidationType enumeratie bevat: WholeNumber, Decimal, List, Date, TextLength, Custom en Any.
Kan ik een validatieregel uit een bereik verwijderen?
Ja. Gebruik ValidationCollection::RemoveArea(area) om de regel uit een bereik te verwijderen, of RemoveACell(row, col) voor een enkele cel.
Kan ik dezelfde validatieregel toepassen op meerdere bereiken?
Ja. Roep Validation::AddArea(area) meerdere keren aan op hetzelfde Validation object om het op extra bereiken toe te passen.
Welke waarschuwingsstijlen zijn beschikbaar?
ValidationAlertType bevat: Stop (blokkeert ongeldige invoer), Warning (waarschuwt maar staat invoer toe) en Information (alleen informatieve tooltip).
Werkt validatie tijdens runtime, of alleen in Excel?
Regels voor gegevensvalidatie worden opgeslagen in het XLSX-bestand en afgedwongen door Excel of een compatibele lezer. De bibliotheek evalueert validatie-beperkingen niet tijdens runtime wanneer waarden programmatisch worden ingesteld.