Comment travailler avec la validation des données dans .NET

Comment travailler avec la validation des données dans .NET

Aspose.Cells FOSS for .NET vous permet d’ajouter des règles de validation de données aux plages de cellules via Worksheet.Validations (un ValidationCollection). Appelez Add(CellArea) pour créer un objet Validation et définir son Type à l’aide de ValidationType. Les types pris en charge incluent List, Decimal et Custom. Installez avec dotnet add package Aspose.Cells_FOSS.

Guide étape par étape

Étape 1 : Installer le package

dotnet add package Aspose.Cells_FOSS

Étape 2 : Importer l’espace de noms

using Aspose.Cells_FOSS;

Étape 3 : Ajouter une validation de liste déroulante

Créez un CellArea avec CellArea.CreateCellArea(), ajoutez‑le à Worksheet.Validations, et définissez ValidationType.List avec une liste séparée par des virgules dans 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.");

Étape 4 : Ajouter une validation de plage numérique

Utilisez ValidationType.Decimal avec OperatorType.Between et Formula1/Formula2 pour contraindre la saisie numérique.

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

Étape 5 : Combiner plusieurs validations sur la même feuille

Vous pouvez ajouter n’importe quel nombre de validations à la même feuille en appelant Validations.Add() plusieurs fois, chacune avec un CellArea différent.

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

Problèmes courants et solutions

Le menu déroulant n’apparaît pas dans Excel après l’enregistrement.
Assurez-vous que InCellDropDown = true est défini sur l’objet Validation avant l’enregistrement. Le menu déroulant n’est visible dans Excel que lorsque ce drapeau est true et que ValidationType.List est utilisé.

La validation autorise des valeurs en dehors de la plage définie.
La validation est appliquée par Excel, pas par la bibliothèque. La définition des règles de validation n’empêche pas la bibliothèque elle‑même d’écrire n’importe quelle valeur dans la cellule. La validation est appliquée lorsqu’un utilisateur saisit des données dans Excel.

Formula1 pour une validation de liste s’affiche comme #NAME? dans Excel.
Pour une liste en ligne séparée par des virgules, encadrez la chaîne entre des guillemets échappés : Formula1 = "\"Option1,Option2,Option3\"". Sans les guillemets internes, Excel interprète la valeur comme une formule de référence de cellule.

OperatorType.Between ne s’applique pas correctement.
Assurez-vous que Formula1 (minimum) et Formula2 (maximum) sont définis comme des chaînes. L’absence de Formula2 pour Between laisse la borne supérieure indéfinie.

Foire aux questions

Puis-je valider par rapport à une plage de cellules (par ex. une plage nommée) ?

Définissez Formula1 sur une référence de plage de cellules telle que "Sheet2!$A$1:$A$10". Les valeurs de cette plage seront utilisées comme source de la liste déroulante.

La validation empêche-t-elle la bibliothèque d’écrire des valeurs invalides ?

Non. Les règles de validation sont appliquées par Excel lorsqu’un utilisateur saisit des données. La bibliothèque Aspose.Cells FOSS n’applique pas la validation lorsque vous appelez Cell.PutValue() de façon programmatique.

Comment supprimer une règle de validation ?

Accédez à la règle via Worksheet.Validations[index] et utilisez les opérations ValidationCollection pour gérer les règles. Alternativement, créez un nouveau modèle de classeur sans les règles indésirables.

Quel est le nombre maximal de validations par feuille ?

Le format XLSX prend en charge jusqu’à 65 530 règles de validation par feuille de calcul.

Voir aussi

 Français