Come lavorare con la convalida dei dati in .NET

Come lavorare con la convalida dei dati in .NET

Aspose.Cells FOSS per .NET ti consente di aggiungere regole di convalida dei dati a intervalli di celle tramite Worksheet.Validations (un ValidationCollection). Chiama Add(CellArea) per creare un oggetto Validation e impostare il suo Type usando ValidationType. I tipi supportati includono List, Decimal e Custom. Installa con dotnet add package Aspose.Cells_FOSS.

Guida passo-passo

Passo 1: Installa il pacchetto

dotnet add package Aspose.Cells.FOSS

Passo 2: Importa lo spazio dei nomi

using Aspose.Cells_FOSS;

Passo 3: Aggiungi una convalida a discesa di tipo elenco

Crea un CellArea con CellArea.CreateCellArea(), aggiungilo a Worksheet.Validations e imposta ValidationType.List con un elenco separato da virgole in 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.");

Passo 4: Aggiungi una convalida di intervallo numerico

Usa ValidationType.Decimal con OperatorType.Between e Formula1/Formula2 per limitare l’input numerico.

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

Passo 5: Combina più convalide nello stesso foglio

Puoi aggiungere un numero qualsiasi di convalide allo stesso foglio chiamando Validations.Add() più volte, ciascuna con un CellArea diverso.

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

Problemi comuni e soluzioni

Il menu a discesa non appare in Excel dopo il salvataggio. Ensure InCellDropDown = true è impostato su Validation oggetto prima del salvataggio. Il menu a discesa è visibile in Excel solo quando questo flag è true and ValidationType.List è usato.

La convalida consente valori al di fuori dell’intervallo definito. La convalida è applicata da Excel, non dalla libreria. Impostare le regole di convalida non impedisce alla libreria stessa di scrivere qualsiasi valore nella cella. La convalida viene applicata quando un utente inserisce dati in Excel.

Formula1 per una convalida elenco viene visualizzato come #NAME? in Excel. Per un elenco inline separato da virgole, avvolgi la stringa tra virgolette di escape: Formula1 = "\"Option1,Option2,Option3\"". Senza le virgolette interne, Excel interpreta il valore come una formula di riferimento a una cella.

OperatorType.Between non si applica correttamente. Assicurati che entrambi Formula1 (minimum) e Formula2 (maximum) siano impostati come stringhe. Mancante Formula2 for Between lascia il limite superiore non definito.

Domande frequenti

Posso convalidare rispetto a un intervallo di celle (ad es. un intervallo denominato)?

Imposta Formula1 su un riferimento a un intervallo di celle, ad esempio "Sheet2!$A$1:$A$10". I valori in quell’intervallo saranno utilizzati come origine dell’elenco a discesa.

La convalida impedisce alla libreria di scrivere valori non validi?

No. Le regole di convalida sono applicate da Excel quando un utente inserisce dati. La libreria FOSS Aspose.Cells non applica la convalida quando chiami Cell.PutValue() programmaticamente.

Come rimuovo una regola di convalida?

Accedi alla regola tramite Worksheet.Validations[index] e utilizza le operazioni ValidationCollection per gestire le regole. In alternativa, crea un nuovo modello di cartella di lavoro senza le regole indesiderate.

Qual è il numero massimo di convalide per foglio?

Il formato XLSX supporta fino a 65,530 regole di convalida per foglio di lavoro.

Vedi anche

 Italiano