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_FOSSSchritt 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.