Come lavorare con la convalida dei dati in .NET

Come lavorare con la convalida dei dati in .NET

Aspose.Cells FOSS per .NET 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 elenco a discesa

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 vincolare 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.
Assicurati che InCellDropDown = true sia impostato sull’oggetto Validation prima del salvataggio. Il menu a discesa è visibile in Excel solo quando questo flag è true e viene usato ValidationType.List.

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 di elenco appare come #NAME? in Excel. Per un elenco in linea separato da virgole, racchiudi la stringa tra virgolette escape: Formula1 = "\"Option1,Option2,Option3\"". Senza le virgolette interne, Excel interpreta il valore come una formula di riferimento di cella.

OperatorType.Between non si applica correttamente. Assicurati che sia Formula1 (minimo) sia Formula2 (massimo) siano impostati come stringhe. La mancanza di Formula2 per Between lascia il limite superiore indefinito.

Domande Frequenti

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

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

La validazione impedisce alla libreria di scrivere valori non validi?

No. Le regole di convalida sono applicate da Excel quando un utente inserisce dati. La libreria Aspose.Cells FOSS 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 validazioni per foglio?

Il formato XLSX supporta fino a 65.530 regole di convalida per foglio di lavoro.

Vedi anche

 Italiano