Hur man arbetar med datavalidering i .NET
Aspose.Cells FOSS för .NET gör det möjligt att lägga till datavalideringsregler för cellområden via Worksheet.Validations (en ValidationCollection). Anropa Add(CellArea) för att skapa ett Validation‑objekt och sätt dess Type med hjälp av ValidationType. Stödda typer inkluderar List, Decimal och Custom. Installera med dotnet add package Aspose.Cells_FOSS.
Steg-för-steg-guide
Steg 1: Installera paketet
dotnet add package Aspose.Cells_FOSSSteg 2: Importera namnutrymmet
using Aspose.Cells_FOSS;Steg 3: Lägg till en rullgardinslista‑validering
Skapa en CellArea med CellArea.CreateCellArea(), lägg till den i Worksheet.Validations och ange ValidationType.List med en kommaseparerad lista 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: Lägg till en numerisk intervallvalidering
Använd ValidationType.Decimal med OperatorType.Between och Formula1/Formula2 för att begränsa numerisk inmatning.
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: Kombinera flera valideringar på samma blad
Du kan lägga till valfritt antal valideringar på samma blad genom att anropa Validations.Add() flera gånger, varje gång med en annan 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.");Vanliga problem och lösningar
Rullgardinsmenyn visas inte i Excel efter sparning.
Se till att InCellDropDown = true är inställd på Validation‑objektet innan du sparar. Rullgardinsmenyn är endast synlig i Excel när denna flagga är true och ValidationType.List används.
Validering tillåter värden utanför det definierade intervallet. Valideringen verkställs av Excel, inte av biblioteket. Att ställa in valideringsregler hindrar inte själva biblioteket från att skriva vilket värde som helst till cellen. Valideringen tillämpas när en användare anger data i Excel.
Formula1 för en listvalidering visas som #NAME? i Excel.
För en inline kommaseparerad lista, omge strängen med escapade citattecken: Formula1 = "\"Option1,Option2,Option3\"". Utan de inre citattecknen behandlar Excel värdet som en cellreferensformel.
OperatorType.Between tillämpas inte korrekt.
Se till att både Formula1 (minimum) och Formula2 (maximum) är inställda som strängar. Saknad Formula2 för Between lämnar den övre gränsen odefinierad.
Vanliga frågor
Kan jag validera mot ett cellområde (t.ex. ett namngivet område)?
Ställ in Formula1 till en cellintervallreferens, till exempel "Sheet2!$A$1:$A$10". Värdena i det intervallet kommer att användas som källan för rullgardinslistan.
Förhindrar validering att biblioteket skriver ogiltiga värden?
Nej. Valideringsregler verkställs av Excel när en användare anger data. Aspose.Cells FOSS‑biblioteket verkställer inte validering när du anropar Cell.PutValue() programatiskt.
Hur tar jag bort en valideringsregel?
Åtkomst till regeln via Worksheet.Validations[index] och använd ValidationCollection‑operationer för att hantera regler. Alternativt skapa en ny arbetsboksmodell utan de oönskade reglerna.
Vad är det maximala antalet valideringar per blad?
XLSX-formatet stöder upp till 65 530 valideringsregler per kalkylblad.