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 setzen Sie dessen Type mit ValidationType. 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: Listen-Dropdown-Validierung 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

Verwende 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

Du kannst beliebig viele Validierungen zum selben Blatt hinzufügen, indem du Validations.Add() mehrfach aufrufst, jedes Mal 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. Ensure InCellDropDown = true ist auf dem Validation Objekt vor dem Speichern gesetzt. Das Dropdown ist in Excel nur sichtbar, wenn dieses Flag true and ValidationType.List verwendet wird.

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

Formula1 für eine Listenvalidierung wird angezeigt als #NAME? in Excel. Für eine inline kommagetrennte Liste, schließen Sie die Zeichenkette in escapete Anführungszeichen ein: 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 beide Formula1 (minimum) und Formula2 (maximum) als Zeichenketten gesetzt sind. Fehlende Formula2 for Between lässt die obere Grenze undefiniert.

Häufig gestellte Fragen

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

Setzen Sie Formula1 auf eine Zellbereichsreferenz, 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 hoch ist die maximale Anzahl von Validierungen pro Blatt?

Das XLSX-Format unterstützt bis zu 65,530 Validierungsregeln pro Arbeitsblatt.

Siehe auch

 Deutsch