Arbeiten mit Datenvalidierung

Arbeiten mit Datenvalidierung

Arbeiten mit Datenvalidierung

Aspose.Cells FOSS for C++ unterstützt das Hinzufügen von zellbasierten Datenvalidierungsregeln zu Arbeitsblättern über die Klassen Validation und ValidationCollection. Die Klasse WorkbookValidator bietet eine Konsistenzprüfung vor dem Speichern.


Hinzufügen einer Validierungsregel

Greifen Sie auf die Validierungssammlung eines Arbeitsblatts zu und fügen Sie eine neue Regel mit ValidationCollection::Add() hinzu. Legen Sie Typ, Formel und Zielbereich im zurückgegebenen Validation-Objekt fest:

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

Validierungstypen

Die Aufzählung ValidationType definiert die Arten von Einschränkungen, die angewendet werden können:

ValidationTypeBeschreibung
WholeNumberGanzzahlwertbeschränkung
DecimalGleitkomma-Beschränkung
ListDropdown-Liste aus einer Formel oder einem Bereich
DateDatumswertbeschränkung
TextLengthString-Längenbeschränkung
CustomFormelbasierte benutzerdefinierte Regel

Warnstil

Die ValidationAlertType-Aufzählung steuert das Verhalten, das angezeigt wird, wenn die Validierung fehlschlägt:

AlertStyleBehavior
StopBlockiert die Eingabe und zeigt einen Fehlermeldungsdialog an
WarningZeigt eine Warnung; der Benutzer kann akzeptieren oder ablehnen
InformationZeigt einen Informationstooltip

Legen Sie den Alarmstil mit Validation::SetAlertStyle(ValidationAlertType) fest.


Abfrage der Validierung in einer Zelle

Verwenden Sie ValidationCollection::GetValidationInCell(row, col), um herauszufinden, welche Validierungsregel auf eine bestimmte Zelle zutrifft. Gibt nullptr zurück, wenn keine Regel zutrifft.


Entfernen von Validierungsregeln

Entfernen Sie eine Validierung aus einer bestimmten Zelle oder einem Zellbereich:

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

Validierung der Arbeitsmappe vor dem Speichern

Rufen Sie WorkbookValidator::ValidateForSave auf, um vor dem Speichern eine Konsistenzprüfung des Arbeitsmappenmodells durchzuführen. Dies wird automatisch von Workbook::Save aufgerufen, kann jedoch während der Entwicklung unabhängig ausgelöst werden:

WorkbookValidator validator;
validator.ValidateForSave(workbook);

Tipps und bewährte Verfahren

  • Setzen Sie immer sowohl SetFormula1 als auch SetFormula2 für bereichsbasierte Validierungen (WholeNumber, Decimal, Date) fest, um die unteren und oberen Grenzen zu definieren.
  • Verwenden Sie SetIgnoreBlank(true), um leere Zellen die Validierung passieren zu lassen, ohne einen Fehler auszulösen.
  • Rufen Sie ValidationCollection::AreasOverlap auf, bevor Sie eine neue Regel hinzufügen, um überlappende Validierungsbereiche im selben Blatt zu prüfen.
  • WorkbookValidator::ValidateForSave wird beim Speichern intern aufgerufen; rufen Sie es während der Entwicklung auf, um Probleme frühzeitig zu erkennen.

Häufige Probleme

ProblemUrsacheLösung
Validierung nicht auf Zelle angewendetBereich nicht hinzugefügtRufe Validation::AddArea(area) mit dem Zielbereich auf
Dropdown wird nicht angezeigtSetInCellDropDown(false)Setze SetInCellDropDown(true) für Listenvalidierungen
Regeln überschneiden sichZwei Regeln decken dieselben Zellen abVerwenden Sie AreasOverlap, um Konflikte zu erkennen und zu lösen
ValidateForSave schlägt fehlModellinkonsistenzÜberprüfen Sie die gemeldete Inkonsistenz und beheben Sie sie, bevor Sie speichern

API Reference Zusammenfassung

Klasse/MethodeBeschreibung
ValidationCollection::Add()Eine neue leere Validierungsregel hinzufügen
ValidationCollection::GetValidationInCell(row, col)Validierung für eine Zelle finden
ValidationCollection::RemoveArea(area)Validierung aus einem Bereich entfernen
ValidationCollection::RemoveACell(row, col)Validierung aus einer Zelle entfernen
ValidationCollection::AreasOverlapAuf überlappende Validierungsbereiche prüfen
Validation::SetType(ValidationType)Setze den Validierungstyp
Validation::SetFormula1(expr)Untergrenze festlegen oder Listenquelle
Validation::SetFormula2(expr)Obere Grenze festlegen
Validation::AddArea(area)Regel auf einen Bereich anwenden
Validation::RemoveArea(area)Entferne die Regel aus einem Bereich
Validation::SetAlertStyle(style)Stop-/Warn-/Informationsverhalten festlegen
WorkbookValidator::ValidateForSaveVorab-Konsistenzprüfung

Siehe auch

 Deutsch