Wie man mit Datenvalidierung in .NET arbeitet

Wie man mit Datenvalidierung in .NET arbeitet

Aspose.Cells FOSS für .NET ermöglicht es Ihnen, Datenvalidierungsregeln zu Zellbereichen über Worksheet.Validations (ein ValidationCollection) hinzuzufügen. Rufen Sie Add(CellArea) auf, um ein Validation-Objekt zu erstellen und dessen Type mit ValidationType festzulegen. Unterstützte Typen umfassen List, Decimal und Custom. Installieren Sie es mit dotnet add package Aspose.Cells_FOSS.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

dotnet add package Aspose.Cells_FOSS

Schritt 2: Namespace importieren

using Aspose.Cells_FOSS;

Schritt 3: Dropdown‑Listenvalidierung hinzufügen

Erstelle ein CellArea mit CellArea.CreateCellArea(), füge es zu Worksheet.Validations hinzu und setze ValidationType.List mit einer kommagetrennten Liste in Formula1.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Dropdown list for A1:A10
var listVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A1", "A10"))];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,In Progress,Closed\"";
listVal.InCellDropDown = true;
listVal.IgnoreBlank = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Choose a status from the dropdown";

wb.Save("list-validation.xlsx");
Console.WriteLine("List validation added.");

Schritt 4: Numerische Bereichsvalidierung hinzufügen

Verwenden Sie ValidationType.Decimal mit OperatorType.Between und Formula1/Formula2, um numerische Eingaben zu beschränken.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Decimal range validation for B1:B10 — allow 0 to 100
var numVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B1", "B10"))];
numVal.Type = ValidationType.Decimal;
numVal.Operator = OperatorType.Between;
numVal.Formula1 = "0";
numVal.Formula2 = "100";
numVal.ErrorTitle = "Out of Range";
numVal.ErrorMessage = "Please enter a number between 0 and 100.";
numVal.ShowError = true;
numVal.IgnoreBlank = true;

wb.Save("decimal-validation.xlsx");
Console.WriteLine("Decimal validation added.");

Schritt 5: Mehrere Validierungen im selben Blatt kombinieren

Sie können beliebig viele Validierungen zum selben Blatt hinzufügen, indem Sie Validations.Add() mehrfach aufrufen, jeweils mit einem anderen CellArea.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// List validation for column A (status)
var statusVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A2", "A100"))];
statusVal.Type = ValidationType.List;
statusVal.Formula1 = "\"New,Open,Closed\"";
statusVal.InCellDropDown = true;

// Decimal validation for column B (score)
var scoreVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B2", "B100"))];
scoreVal.Type = ValidationType.Decimal;
scoreVal.Operator = OperatorType.Between;
scoreVal.Formula1 = "0";
scoreVal.Formula2 = "10";
scoreVal.ShowError = true;

wb.Save("combined-validation.xlsx");
Console.WriteLine("Combined validations added to sheet.");

Häufige Probleme und Lösungen

Das Dropdown erscheint nach dem Speichern nicht in Excel.
Stellen Sie sicher, dass InCellDropDown = true im Validation‑Objekt gesetzt ist, bevor Sie speichern. Das Dropdown ist in Excel nur sichtbar, wenn dieses Flag true ist und ValidationType.List verwendet wird.

Validierung erlaubt Werte außerhalb des definierten Bereichs.
Die Validierung wird von Excel erzwungen, nicht von der Bibliothek. Das Festlegen von Validierungsregeln verhindert nicht, dass die Bibliothek selbst einen beliebigen Wert in die Zelle schreibt. Die Validierung wird angewendet, wenn ein Benutzer Daten in Excel eingibt.

Formula1 für eine Listvalidierung wird in Excel als #NAME? angezeigt.
Für eine inline, kommagetrennte Liste die Zeichenkette in escapeten Anführungszeichen einbetten: Formula1 = "\"Option1,Option2,Option3\"". Ohne die inneren Anführungszeichen behandelt Excel den Wert als Zellreferenz‑Formel.

OperatorType.Between wird nicht korrekt angewendet.
Stellen Sie sicher, dass sowohl Formula1 (Minimum) als auch Formula2 (Maximum) als Zeichenketten festgelegt sind. Fehlendes Formula2 für Between lässt die obere Grenze undefiniert.

Häufig gestellte Fragen

Kann ich gegen einen Zellbereich (z. B. einen benannten Bereich) validieren?

Setzen Sie Formula1 auf einen Zellbereichsverweis, z. B. "Sheet2!$A$1:$A$10". Die Werte in diesem Bereich werden als Quelle für die Dropdown‑Liste verwendet.

Verhindert die Validierung, dass die Bibliothek ungültige Werte schreibt?

Nein. Validierungsregeln werden von Excel durchgesetzt, wenn ein Benutzer Daten eingibt. Die Aspose.Cells FOSS‑Bibliothek erzwingt keine Validierung, wenn Sie Cell.PutValue() programmgesteuert aufrufen.

Wie entferne ich eine Validierungsregel?

Greifen Sie über Worksheet.Validations[index] auf die Regel zu und verwenden Sie ValidationCollection‑Operationen, um Regeln zu verwalten. Alternativ erstellen Sie ein neues Arbeitsmappenmodell ohne die unerwünschten Regeln.

Wie lautet die maximale Anzahl von Validierungen pro Blatt?

Das XLSX-Format unterstützt bis zu 65.530 Validierungsregeln pro Arbeitsblatt.

Siehe auch

 Deutsch