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