Hoe te werken met gegevensvalidatie in .NET
Aspose.Cells FOSS voor .NET stelt u in staat om gegevensvalidatieregels toe te voegen aan celbereiken via Worksheet.Validations (een ValidationCollection). Roep Add(CellArea) aan om een Validation‑object te maken en stel de Type in met behulp van ValidationType. Ondersteunde typen omvatten List, Decimal en Custom. Installeer met dotnet add package Aspose.Cells_FOSS.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
dotnet add package Aspose.Cells_FOSSStap 2: Importeer de Namespace
using Aspose.Cells_FOSS;Stap 3: Voeg een lijst‑Dropdownvalidatie toe
Maak een CellArea met CellArea.CreateCellArea(), voeg deze toe aan Worksheet.Validations, en stel ValidationType.List in met een door komma’s gescheiden lijst 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.");Stap 4: Voeg een numerieke bereikvalidatie toe
Gebruik ValidationType.Decimal met OperatorType.Between en Formula1/Formula2 om numerieke invoer te beperken.
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.");Stap 5: Combineer meerdere validaties op hetzelfde blad
U kunt een willekeurig aantal validaties aan hetzelfde blad toevoegen door Validations.Add() meerdere keren aan te roepen, elk met een andere 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.");Veelvoorkomende problemen en oplossingen
De vervolgkeuzelijst verschijnt niet in Excel na opslaan.
Zorg ervoor dat InCellDropDown = true is ingesteld op het Validation‑object vóór het opslaan. De vervolgkeuzelijst is alleen zichtbaar in Excel wanneer deze vlag true is en ValidationType.List wordt gebruikt.
Validatie staat waarden buiten het gedefinieerde bereik toe.
De validatie wordt afgedwongen door Excel, niet door de bibliotheek. Het instellen van validatieregels voorkomt niet dat de bibliotheek zelf een willekeurige waarde naar de cel schrijft. De validatie wordt toegepast wanneer een gebruiker gegevens invoert in Excel.
Formula1 voor een lijstvalidatie wordt weergegeven als #NAME? in Excel.
Voor een inline door komma’s gescheiden lijst, wikkel de tekenreeks in geescaped aanhalingstekens: Formula1 = "\"Option1,Option2,Option3\"". Zonder de binnenste aanhalingstekens behandelt Excel de waarde als een celreferentieformule.
OperatorType.Between wordt niet correct toegepast.
Zorg ervoor dat zowel Formula1 (minimum) als Formula2 (maximum) als strings zijn ingesteld. Ontbrekende Formula2 voor Between laat de bovengrens onbepaald.
Veelgestelde vragen
Kan ik valideren tegen een celbereik (bijv. een benoemd bereik)?
Stel Formula1 in op een celbereikreferentie, zoals "Sheet2!$A$1:$A$10". De waarden in dat bereik worden gebruikt als bron voor de vervolgkeuzelijst.
Voorkomt validatie dat de bibliotheek ongeldige waarden schrijft?
Nee. Validatieregels worden afgedwongen door Excel wanneer een gebruiker gegevens invoert. De Aspose.Cells FOSS‑bibliotheek dwingt validatie niet af wanneer je Cell.PutValue() programmatisch aanroept.
Hoe verwijder ik een validatieregel?
Toegang tot de regel via Worksheet.Validations[index] en gebruik ValidationCollection bewerkingen om regels te beheren. Als alternatief, maak een nieuw werkboekmodel zonder de ongewenste regels.
Wat is het maximale aantal validaties per blad?
Het XLSX-formaat ondersteunt tot 65.530 validatieregels per werkblad.