Jak pracovat s validací dat v .NET
Aspose.Cells FOSS pro .NET vám umožňuje přidávat pravidla pro ověřování dat do oblastí buněk pomocí Worksheet.Validations (ValidationCollection). Zavolejte Add(CellArea) pro vytvoření objektu Validation a nastavte jeho Type pomocí ValidationType. Podporované typy zahrnují List, Decimal a Custom. Instalujte pomocí dotnet add package Aspose.Cells_FOSS.
Průvodce krok za krokem
Krok 1: Nainstalujte balíček
dotnet add package Aspose.Cells_FOSSKrok 2: Importovat jmenný prostor
using Aspose.Cells_FOSS;Krok 3: Přidat validaci rozbalovacího seznamu
Vytvořte CellArea s CellArea.CreateCellArea(), přidejte jej do Worksheet.Validations a nastavte ValidationType.List pomocí čárkou odděleného seznamu v 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.");Krok 4: Přidat ověření číselného rozsahu
Použijte ValidationType.Decimal s OperatorType.Between a Formula1/Formula2 k omezení číselného vstupu.
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.");Krok 5: Kombinovat více validací na stejném listu
Můžete přidat libovolný počet validací do stejného listu voláním Validations.Add() vícekrát, každé s jiným 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.");Běžné problémy a opravy
Rozbalovací seznam se po uložení v Excelu nezobrazí.
Ujistěte se, že InCellDropDown = true je nastaven na objektu Validation před uložením. Rozbalovací seznam je v Excelu viditelný pouze tehdy, když je tento příznak true a je použito ValidationType.List.
Validace umožňuje hodnoty mimo definovaný rozsah.
Validace je vynucována aplikací Excel, nikoli knihovnou. Nastavení pravidel validace nebrání samotné knihovně zapisovat jakoukoli hodnotu do buňky. Validace se použije, když uživatel zadá data v Excelu.
Formula1 pro ověření seznamu se v Excelu zobrazuje jako #NAME?.
Pro řetězec s čárkou odděleným seznamem v řádku jej obalte escapovanými uvozovkami: Formula1 = "\"Option1,Option2,Option3\"". Bez vnitřních uvozovek Excel interpretuje hodnotu jako vzorec odkazující na buňku.
OperatorType.Between se neaplikuje správně.
Ujistěte se, že Formula1 (minimum) i Formula2 (maximum) jsou nastaveny jako řetězce. Chybějící Formula2 pro Between ponechává horní mez nedefinovanou.
Často kladené otázky
Mohu validovat vůči rozsahu buněk (např. pojmenovanému rozsahu)?
Nastavte Formula1 na odkaz na oblast buněk, například "Sheet2!$A$1:$A$10". Hodnoty v tomto rozsahu budou použity jako zdroj rozbalovacího seznamu.
Zabraňuje validace knihovně zapisovat neplatné hodnoty?
Ne. Pravidla validace jsou vynucována v Excelu, když uživatel zadává data. Knihovna Aspose.Cells FOSS nevyžaduje validaci při programovém volání Cell.PutValue().
Jak odstranit validační pravidlo?
Přístup k pravidlu přes Worksheet.Validations[index] a použijte operace ValidationCollection k správě pravidel. Případně vytvořte nový model sešitu bez nežádoucích pravidel.
Jaký je maximální počet validací na listu?
Formát XLSX podporuje až 65,530 validačních pravidel na list.