Cum să lucrați cu validarea datelor în .NET
Aspose.Cells FOSS for .NET vă permite să adăugați reguli de validare a datelor la intervale de celule prin Worksheet.Validations (un ValidationCollection). Apelați Add(CellArea) pentru a crea un obiect Validation și setați-i Type utilizând ValidationType. Tipurile acceptate includ List, Decimal și Custom. Instalați cu dotnet add package Aspose.Cells_FOSS.
Ghid pas cu pas
Pasul 1: Instalaţi pachetul
dotnet add package Aspose.Cells_FOSSPasul 2: Importă spațiul de nume
using Aspose.Cells_FOSS;Pasul 3: Adăugați o validare pentru lista derulantă
Creează un CellArea cu CellArea.CreateCellArea(), adaugă-l la Worksheet.Validations și setează ValidationType.List cu o listă separată prin virgulă în 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.");Pasul 4: Adăugați o validare a intervalului numeric
Utilizați ValidationType.Decimal cu OperatorType.Between și Formula1/Formula2 pentru a restricționa introducerea numerică.
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.");Pasul 5: Combinați multiple validări pe aceeași foaie
Poți adăuga orice număr de validări în aceeași foaie, apelând Validations.Add() de mai multe ori, fiecare cu un CellArea diferit.
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.");Probleme comune și soluții
Meniul derulant nu apare în Excel după salvare.
Asigurați-vă că InCellDropDown = true este setat pe obiectul Validation înainte de salvare. Meniul derulant este vizibil în Excel numai când acest flag este true și se folosește ValidationType.List.
Validarea permite valori în afara intervalului definit.
Validarea este impusă de Excel, nu de bibliotecă. Stabilirea regulilor de validare nu împiedică biblioteca să scrie orice valoare în celulă. Validarea se aplică când un utilizator introduce date în Excel.
Formula1 pentru o validare de listă apare ca #NAME? în Excel.
Pentru o listă în linie separată prin virgulă, încadraţi şirul în ghilimele scăpate: Formula1 = "\"Option1,Option2,Option3\"". Fără ghilimelele interioare, Excel tratează valoarea ca o formulă de referinţă la celulă.
OperatorType.Between nu se aplică corect.
Asigurați-vă că atât Formula1 (minimum), cât și Formula2 (maximum) sunt setate ca șiruri. Lipsa Formula2 pentru Between lasă limita superioară nedefinită.
Întrebări frecvente
Pot valida în raport cu un interval de celule (de ex. un interval denumit)?
Setați Formula1 la o referință de interval de celule, cum ar fi "Sheet2!$A$1:$A$10". Valorile din acel interval vor fi utilizate ca sursă pentru lista derulantă.
Validarea împiedică biblioteca să scrie valori invalide?
Nu. Reglementările de validare sunt aplicate de Excel atunci când un utilizator introduce date. Biblioteca Aspose.Cells FOSS nu aplică validarea când apelați Cell.PutValue() programatic.
Cum pot elimina o regulă de validare?
Accesați regula prin Worksheet.Validations[index] și utilizați operațiunile ValidationCollection pentru a gestiona regulile. Alternativ, creați un nou model de workbook fără regulile nedorite.
Care este numărul maxim de validări pe foaie?
Formatul XLSX acceptă până la 65.530 de reguli de validare pe foaie de calcul.