Slik jobber du med datavalidering i .NET

Slik jobber du med datavalidering i .NET

Aspose.Cells FOSS for .NET gjør det mulig å legge til datavalideringsregler i celleområder gjennom Worksheet.Validations (en ValidationCollection). Kall Add(CellArea) for å opprette et Validation‑objekt og sett dens Type ved hjelp av ValidationType. Støttede typer inkluderer List, Decimal og Custom. Installer med dotnet add package Aspose.Cells_FOSS.

Steg-for-steg guide

Trinn 1: Installer pakken

dotnet add package Aspose.Cells_FOSS

Trinn 2: Importer navnerommet

using Aspose.Cells_FOSS;

Steg 3: Legg til en liste‑nedtrekksvalidering

Opprett en CellArea med CellArea.CreateCellArea(), legg den til Worksheet.Validations, og sett ValidationType.List med en kommaseparert liste i 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.");

Steg 4: Legg til en numerisk områdevalidering

Bruk ValidationType.Decimal med OperatorType.Between og Formula1/Formula2 for å begrense numerisk input.

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.");

Steg 5: Kombiner flere valideringer på samme ark

Du kan legge til et vilkårlig antall valideringer i samme ark ved å kalle Validations.Add() flere ganger, hver med en annen 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.");

Vanlige problemer og løsninger

Nedtrekksmenyen vises ikke i Excel etter lagring.
Sørg for at InCellDropDown = true er satt på Validation‑objektet før lagring. Nedtrekksmenyen er kun synlig i Excel når dette flagget er true og ValidationType.List brukes.

Validering tillater verdier utenfor det definerte området. Valideringen håndheves av Excel, ikke av biblioteket. Å sette valideringsregler hindrer ikke biblioteket i å skrive hvilken som helst verdi til cellen. Valideringen brukes når en bruker legger inn data i Excel.

Formula1 for en listevalidering vises som #NAME? i Excel.
For en inline kommaseparert liste, omslut strengen med escapede anførselstegn: Formula1 = "\"Option1,Option2,Option3\"". Uten de indre anførselstegnene behandler Excel verdien som en celle‑referanseformel.

OperatorType.Between blir ikke brukt riktig.
Sørg for at både Formula1 (minimum) og Formula2 (maksimum) er satt som strenger. Manglende Formula2 for Between gjør at den øvre grensen er udefinert.

Ofte stilte spørsmål

Kan jeg validere mot et celleområde (f.eks. et navngitt område)?

Angi Formula1 til en celleområde-referanse, for eksempel "Sheet2!$A$1:$A$10". Verdiene i det området vil bli brukt som kilde for rullegardinlisten.

Forhindrer validering at biblioteket skriver ugyldige verdier?

Nei. Valideringsregler håndheves av Excel når en bruker legger inn data. Aspose.Cells FOSS-biblioteket håndhever ikke validering når du kaller Cell.PutValue() programmatisk.

Hvordan fjerner jeg en valideringsregel?

Få tilgang til regelen via Worksheet.Validations[index] og bruk ValidationCollection‑operasjoner for å administrere regler. Alternativt kan du opprette en ny arbeidsbokmodell uten de uønskede reglene.

Hva er det maksimale antallet valideringer per ark?

XLSX-formatet støtter opptil 65 530 valideringsregler per regneark.

Se også

 Norsk