Jak pracovat s validací dat v .NET

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_FOSS

Krok 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.

Viz také

 Čeština