Wie man Datenvalidierung zu einer Tabelle in C++ hinzufügt
Aspose.Cells FOSS für C++ unterstützt zellbasierte Datenvalidierungsregeln, die einschränken, welche Werte Benutzer in bestimmten Zellen oder Bereichen eingeben können. Die Klassen Validation, ValidationCollection und WorkbookValidator bilden die Validierung API.
Schritt-für-Schritt-Anleitung
Schritt 1: Build einrichten
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)Schritt 2: Erforderliche Header einbinden
#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;Schritt 3: Auf die Validierungssammlung zugreifen
Rufe das ValidationCollection aus dem Arbeitsblatt ab:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
return 0;
}Schritt 4: Validierungsregel hinzufügen
Rufen Sie ValidationCollection::Add() auf und konfigurieren Sie das zurückgegebene Validation-Objekt:
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);Schritt 5: Regel auf einen Bereich anwenden
Fügen Sie die Validierung an einem CellArea mit Validation::AddArea hinzu:
CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);Schritt 6: Arbeitsmappe speichern
workbook.Save("validated.xlsx");
workbook.Dispose();Schritt 7: Vorab-Validierung ausführen (optional)
Rufen Sie WorkbookValidator::ValidateForSave während der Entwicklung auf, um Modellprobleme vor dem Speichern zu erkennen:
WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");Häufige Probleme und Lösungen
Validierung nicht sichtbar in gespeicherter Datei Ensure Validation::AddArea(area) wird nach dem Konfigurieren der Regel aufgerufen. Eine Regel ohne zugehörigen Bereich wird nicht serialisiert.
Drop-down-Liste wird nicht angezeigt Setzen v.SetInCellDropDown(true) und setzen v.SetType(ValidationType::List) with SetFormula1 zeigt auf einen Bereich oder kommagetrennte Werte.
Überlappende Validierungsbereiche Verwenden ValidationCollection::AreasOverlap um Konflikte zu prüfen, bevor eine neue Regel hinzugefügt wird. Überlappende Regeln können in Excel unerwartetes Verhalten verursachen.
Eingabemeldung wird nicht angezeigt Stellen Sie sicher, dass beide SetShowInput(true) and SetInputMessage("...") gesetzt sind. Eine leere Meldungszeichenkette unterdrückt die Eingabeaufforderung, selbst wenn SetShowInput(true) aufgerufen wird.
ValidateForSave meldet Fehler Überprüfen Sie die gemeldete Inkonsistenz. Häufige Ursachen sind fehlende Formelfestlegungen für Bereichsvalidierungen und ungültige Zellbereichskoordinaten.
Häufig gestellte Fragen
Welche Validierungstypen werden unterstützt?
Die ValidationType-Aufzählung enthält: WholeNumber, Decimal, List, Date, TextLength, Custom und Any.
Kann ich eine Validierungsregel aus einem Bereich entfernen?
Ja. Verwenden Sie ValidationCollection::RemoveArea(area), um die Regel aus einem Bereich zu entfernen, oder RemoveACell(row, col) für eine einzelne Zelle.
Kann ich dieselbe Validierungsregel auf mehrere Bereiche anwenden?
Ja. Rufen Sie Validation::AddArea(area) mehrfach auf demselben Validation-Objekt auf, um sie auf weitere Bereiche anzuwenden.
Welche Warnstile stehen zur Verfügung?
ValidationAlertType enthält: Stop (blockiert ungültige Eingabe), Warning (warnt, erlaubt aber Eingabe) und Information (nur informativer Tooltip).
Funktioniert die Validierung zur Laufzeit oder nur in Excel?
Datenvalidierungsregeln werden in der XLSX-Datei gespeichert und von Excel oder einem kompatiblen Reader durchgesetzt. Die Bibliothek wertet Validierungsbeschränkungen zur Laufzeit nicht aus, wenn Werte programmgesteuert gesetzt werden.