Validation de données

Types de validation des données et exécution

La validation des données est la capacité de définir des règles relatives aux données saisies dans une feuille de calcul. Par exemple, utilisez la validation pour vous assurer qu’une colonne étiquetée DATE ne contient que des dates, ou qu’une autre colonne ne contient que des chiffres. Vous pourriez même vous assurer qu’une colonne étiquetée DATE ne contient que des dates dans une certaine plage. Avec la validation des données, vous pouvez contrôler ce qui est saisi dans les cellules de la feuille de calcul.

Microsoft Excel prend en charge plusieurs types de validation des données. Chaque type est utilisé pour contrôler le type de données entrées dans une cellule ou une plage de cellules. Ci-dessous, des extraits de code illustrent comment valider que:

  • Les chiffres sont des entiers, c’est-à-dire qu’ils n’ont pas de partie décimale.
  • Les nombres décimaux suivent la structure correcte. L’exemple de code définit qu’une plage de cellules doit avoir deux décimales.
  • Les valeurs sont restreintes à une liste de valeurs. La validation de liste définit une liste distincte de valeurs qui peuvent s’appliquer à une cellule ou une plage de cellules.
  • Les dates se trouvent dans une plage spécifique.
  • Une heure se situe dans une plage spécifique.
  • Un texte a une longueur de caractères donnée.

Validation des données avec Microsoft Excel

Pour créer des validations avec Microsoft Excel:

  1. Dans une feuille de calcul, sélectionnez les cellules auxquelles vous voulez appliquer la validation.
  2. Dans le menu Données, sélectionnez Validation. La boîte de dialogue de validation s’affichera.
  3. Cliquez sur l’onglet Paramètres et saisissez les paramètres.

Validation des données avec Aspose.Cells pour la bibliothèque Excel Python

La validation des données est une fonctionnalité puissante pour valider les informations saisies dans les feuilles de calcul. Avec la validation des données, les développeurs peuvent fournir aux utilisateurs une liste de choix, restreindre les saisies de données à un type ou une taille spécifique, etc. Dans Aspose.Cells pour Python via .NET, chaque classe Worksheet a une propriété validations qui représente une collection d’objets Validation. Pour configurer la validation, définissez certaines des propriétés de la classe Validation comme suit:

  • type - représente le type de validation, qui peut être spécifié en utilisant l’une des valeurs prédéfinies dans l’énumération ValidationType.
  • Opérateur - représente l’opérateur à utiliser dans la validation, qui peut être spécifié en utilisant l’une des valeurs prédéfinies dans l’énumération OperatorType.
  • formule1 - représente la valeur ou l’expression associée à la première partie de la validation des données.
  • formule2 – représente la valeur ou l’expression associée à la deuxième partie de la validation des données.

Lorsque les propriétés de l’objet Validation ont été configurées, les développeurs peuvent utiliser la structure CellArea pour stocker des informations sur la plage de cellules qui seront validées à l’aide de la validation créée.

Types de validation des données

L’énumération ValidationType a les membres suivants:

Nom du membre Description
ANY_VALUE Désigne une valeur de n’importe quel type.
WHOLE_NUMBER Désigne le type de validation pour les nombres entiers.
DECIMAL Désigne le type de validation pour les nombres décimaux.
LISTE Désigne le type de validation pour la liste déroulante.
DATE Désigne le type de validation pour les dates.
HEURE Désigne le type de validation pour l’heure.
TEXT_LENGTH Désigne le type de validation pour la longueur du texte.
PERSONNALISÉ Désigne le type de validation personnalisée.
Validation de données pour les nombres entiers

Avec ce type de validation, les utilisateurs peuvent entrer uniquement des nombres entiers dans une plage spécifiée dans les cellules validées. Les exemples de code suivants montrent comment implémenter le type de validation WholeNumber. L’exemple crée la même validation des données en utilisant Aspose.Cells pour Python via .NET que celle créée en utilisant Microsoft Excel ci-dessus.

from aspose.cells import CellArea, OperatorType, ValidationType, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Create a workbook object.
workbook = Workbook()
# Create a worksheet and get the first worksheet.
ExcelWorkSheet = workbook.worksheets[0]
# Accessing the Validations collection of the worksheet
validations = workbook.worksheets[0].validations
# Create Cell Area
ca = CellArea()
ca.start_row = 0
ca.end_row = 0
ca.start_column = 0
ca.end_column = 0
# Creating a Validation object
validation = validations[validations.add(ca)]
# Setting the validation type to whole number
validation.type = ValidationType.WHOLE_NUMBER
# Setting the operator for validation to Between
validation.operator = OperatorType.BETWEEN
# Setting the minimum value for the validation
validation.formula1 = "10"
# Setting the maximum value for the validation
validation.formula2 = "1000"
# Applying the validation to a range of cells from A1 to B2 using the
# CellArea structure
area = CellArea()
area.start_row = 0
area.end_row = 1
area.start_column = 0
area.end_column = 1
# Adding the cell area to Validation
validation.add_area(area)
# Save the workbook.
workbook.save("output.out.xls")
Validation de données par liste

Ce type de validation permet à l’utilisateur d’entrer des valeurs à partir d’une liste déroulante. Il fournit une liste: une série de lignes contenant des données. Dans l’exemple, une deuxième feuille de calcul est ajoutée pour contenir la source de la liste. Les utilisateurs ne peuvent sélectionner que des valeurs dans la liste. La zone de validation est la plage de cellules A1:A5 dans la première feuille de calcul.

Il est important ici de définir la propriété Validation.in_cell_drop_down à true.

from aspose.cells import CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Create a workbook object.
workbook = Workbook()
# Get the first worksheet.
worksheet1 = workbook.worksheets[0]
# Add a new worksheet and access it.
i = workbook.worksheets.add()
worksheet2 = workbook.worksheets[i]
# Create a range in the second worksheet.
range = worksheet2.cells.create_range("E1", "E4")
# Name the range.
range.name = "MyRange"
# Fill different cells with data in the range.
worksheet2.cells.get("E1").value = "Blue"
worksheet2.cells.get("E2").value = "Red"
worksheet2.cells.get("E3").value = "Green"
worksheet2.cells.get("E4").value = "Yellow"
# Get the validations collection.
validations = worksheet1.validations
# Create Cell Area
ca = CellArea()
ca.start_row = 0
ca.end_row = 0
ca.start_column = 0
ca.end_column = 0
# Create a new validation to the validations list.
validation = validations[validations.add(ca)]
# Set the validation type.
validation.type = ValidationType.LIST
# Set the operator.
validation.operator = OperatorType.NONE
# Set the in cell drop down.
validation.in_cell_drop_down = True
# Set the formula1.
validation.formula1 = "=MyRange"
# Enable it to show error.
validation.show_error = True
# Set the alert type severity level.
validation.alert_style = ValidationAlertType.STOP
# Set the error title.
validation.error_title = "Error"
# Set the error message.
validation.error_message = "Please select a color from the list"
# Specify the validation area.
area = CellArea()
area.start_row = 0
area.end_row = 4
area.start_column = 0
area.end_column = 0
# Add the validation area.
validation.add_area(area)
# Save the Excel file.
workbook.save("output.out.xls")
Validation de données pour les dates

Avec ce type de validation, les utilisateurs saisissent des valeurs de date dans une plage spécifiée, ou répondant à des critères spécifiques, dans les cellules validées. Dans l’exemple, l’utilisateur est limité à saisir des dates entre 1970 et 1999. Ici, la zone de validation est la cellule B1.

from aspose.cells import CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Create a workbook.
workbook = Workbook()
# Obtain the cells of the first worksheet.
cells = workbook.worksheets[0].cells
# Put a string value into the A1 cell.
cells.get("A1").put_value("Please enter Date b/w 1/1/1970 and 12/31/1999")
# Set row height and column width for the cells.
cells.set_row_height(0, float(31))
cells.set_column_width(0, float(35))
# Get the validations collection.
validations = workbook.worksheets[0].validations
# Create Cell Area
ca = CellArea()
ca.start_row = 0
ca.end_row = 0
ca.start_column = 0
ca.end_column = 0
# Add a new validation.
validation = validations[validations.add(ca)]
# Set the data validation type.
validation.type = ValidationType.DATE
# Set the operator for the data validation
validation.operator = OperatorType.BETWEEN
# Set the value or expression associated with the data validation.
validation.formula1 = "1/1/1970"
# The value or expression associated with the second part of the data validation.
validation.formula2 = "12/31/1999"
# Enable the error.
validation.show_error = True
# Set the validation alert style.
validation.alert_style = ValidationAlertType.STOP
# Set the title of the data-validation error dialog box
validation.error_title = "Date Error"
# Set the data validation error message.
validation.error_message = "Enter a Valid Date"
# Set and enable the data validation input message.
validation.input_message = "Date Validation Type"
validation.ignore_blank = True
validation.show_input = True
# Set a collection of CellArea which contains the data validation settings.
cellArea = CellArea()
cellArea.start_row = 0
cellArea.end_row = 0
cellArea.start_column = 1
cellArea.end_column = 1
# Add the validation area.
validation.add_area(cellArea)
# Save the Excel file.
workbook.save("output.out.xls")
Validation des données de temps

Avec ce type de validation, les utilisateurs peuvent saisir des heures dans une plage spécifiée, ou répondant à certains critères, dans les cellules validées. Dans l’exemple, l’utilisateur est limité à saisir des heures entre 09h00 et 11h30. Ici, la zone de validation est la cellule B1.

from aspose.cells import CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Create a workbook.
workbook = Workbook()
# Obtain the cells of the first worksheet.
cells = workbook.worksheets[0].cells
# Put a string value into A1 cell.
cells.get("A1").put_value("Please enter Time b/w 09:00 and 11:30 'o Clock")
# Set the row height and column width for the cells.
cells.set_row_height(0, float(31))
cells.set_column_width(0, float(35))
# Get the validations collection.
validations = workbook.worksheets[0].validations
# Create Cell Area
ca = CellArea()
ca.start_row = 0
ca.end_row = 0
ca.start_column = 0
ca.end_column = 0
# Add a new validation.
validation = validations[validations.add(ca)]
# Set the data validation type.
validation.type = ValidationType.TIME
# Set the operator for the data validation.
validation.operator = OperatorType.BETWEEN
# Set the value or expression associated with the data validation.
validation.formula1 = "09:00"
# The value or expression associated with the second part of the data validation.
validation.formula2 = "11:30"
# Enable the error.
validation.show_error = True
# Set the validation alert style.
validation.alert_style = ValidationAlertType.INFORMATION
# Set the title of the data-validation error dialog box.
validation.error_title = "Time Error"
# Set the data validation error message.
validation.error_message = "Enter a Valid Time"
# Set and enable the data validation input message.
validation.input_message = "Time Validation Type"
validation.ignore_blank = True
validation.show_input = True
# Set a collection of CellArea which contains the data validation settings.
cellArea = CellArea()
cellArea.start_row = 0
cellArea.end_row = 0
cellArea.start_column = 1
cellArea.end_column = 1
# Add the validation area.
validation.add_area(cellArea)
# Save the Excel file.
workbook.save("output.out.xls")
Validation de la longueur du texte

Avec ce type de validation, les utilisateurs peuvent saisir des valeurs textuelles d’une longueur spécifiée dans les cellules validées. Dans l’exemple, l’utilisateur est limité à saisir des valeurs de chaîne ne dépassant pas 5 caractères. La zone de validation est la cellule B1.

from aspose.cells import CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Create a new workbook.
workbook = Workbook()
# Obtain the cells of the first worksheet.
cells = workbook.worksheets[0].cells
# Put a string value into A1 cell.
cells.get("A1").put_value("Please enter a string not more than 5 chars")
# Set row height and column width for the cell.
cells.set_row_height(0, float(31))
cells.set_column_width(0, float(35))
# Get the validations collection.
validations = workbook.worksheets[0].validations
# Create Cell Area
ca = CellArea()
ca.start_row = 0
ca.end_row = 0
ca.start_column = 0
ca.end_column = 0
# Add a new validation.
validation = validations[validations.add(ca)]
# Set the data validation type.
validation.type = ValidationType.TEXT_LENGTH
# Set the operator for the data validation.
validation.operator = OperatorType.LESS_OR_EQUAL
# Set the value or expression associated with the data validation.
validation.formula1 = "5"
# Enable the error.
validation.show_error = True
# Set the validation alert style.
validation.alert_style = ValidationAlertType.WARNING
# Set the title of the data-validation error dialog box.
validation.error_title = "Text Length Error"
# Set the data validation error message.
validation.error_message = " Enter a Valid String"
# Set and enable the data validation input message.
validation.input_message = "TextLength Validation Type"
validation.ignore_blank = True
validation.show_input = True
# Set a collection of CellArea which contains the data validation settings.
cellArea = CellArea()
cellArea.start_row = 0
cellArea.end_row = 0
cellArea.start_column = 1
cellArea.end_column = 1
# Add the validation area.
validation.add_area(cellArea)
# Save the Excel file.
workbook.save("output.out.xls")

Règles de validation des données

Lorsque des validations de données sont mises en œuvre, la validation peut être vérifiée en attribuant différentes valeurs dans les cellules. Cell.get_validation_value() peut être utilisé pour récupérer le résultat de la validation. L’exemple suivant démontre cette fonction avec différentes valeurs. Le fichier d’exemple peut être téléchargé depuis le lien suivant pour les tests :

sampleDataValidationRules.xlsx

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Instantiate the workbook from sample Excel file
workbook = Workbook("sample.xlsx")
# Access the first worksheet
worksheet = workbook.worksheets[0]
# Access Cell C1
# Cell C1 has the Decimal Validation applied on it.
# It can take only the values Between 10 and 20
cell = worksheet.cells.get("C1")
# Enter 3 inside this cell
# Since it is not between 10 and 20, it should fail the validation
cell.put_value(3)
# Check if number 3 satisfies the Data Validation rule applied on this cell
print("Is 3 a Valid Value for this Cell: " + str(cell.get_validation_value()))
# Enter 15 inside this cell
# Since it is between 10 and 20, it should succeed the validation
cell.put_value(15)
# Check if number 15 satisfies the Data Validation rule applied on this cell
print("Is 15 a Valid Value for this Cell: " + str(cell.get_validation_value()))
# Enter 30 inside this cell
# Since it is not between 10 and 20, it should fail the validation again
cell.put_value(30)
# Check if number 30 satisfies the Data Validation rule applied on this cell
print("Is 30 a Valid Value for this Cell: " + str(cell.get_validation_value()))

Vérifier si la validation dans la cellule est une liste déroulante

Comme nous l’avons vu, il existe de nombreux types de validations qui peuvent être mises en œuvre dans une cellule. Si vous voulez vérifier si la validation est une liste déroulante ou non, la propriété Validation.in_cell_drop_down peut être utilisée pour le tester. Le code d’exemple suivant démontre l’utilisation de cette propriété. Un fichier d’exemple pour les tests peut être téléchargé depuis le lien suivant :

sampleValidation.xlsx

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
book = Workbook("sampleValidation.xlsx")
sheet = book.worksheets.get("Sheet1")
cells = sheet.cells
a2 = cells.get("A2")
va2 = a2.get_validation()
if va2.in_cell_drop_down:
print("A2 is a dropdown")
else:
print("A2 is NOT a dropdown")
b2 = cells.get("B2")
vb2 = b2.get_validation()
if vb2.in_cell_drop_down:
print("B2 is a dropdown")
else:
print("B2 is NOT a dropdown")
c2 = cells.get("C2")
vc2 = c2.get_validation()
if vc2.in_cell_drop_down:
print("C2 is a dropdown")
else:
print("C2 is NOT a dropdown")

Ajouter une CellArea à une validation existante

Il peut arriver que vous vouliez ajouter CellArea à une Validation existante. Lorsque vous ajoutez CellArea en utilisant Validation.add_area(cell_area), Aspose.Cells vérifie toutes les zones existantes pour voir si la nouvelle zone existe déjà. Si le fichier contient un grand nombre de validations, cela nuit aux performances. Pour surmonter cela, l’API fournit la méthode Validation.add_area(cell_area, check_intersection, check_edge). Le paramètre checkIntersection indique s’il faut vérifier l’intersection d’une zone donnée avec les zones de validation existantes. Le définir sur false désactivera la vérification des autres zones. Le paramètre checkEdge indique s’il faut vérifier les zones appliquées. Si la nouvelle zone devient la zone en haut à gauche, les paramètres internes sont reconstruits. Si vous êtes sûr que la nouvelle zone n’est pas la zone en haut à gauche, vous pouvez définir ce paramètre sur false.

Le code suivant démontre l’utilisation de la méthode Validation.add_area(cell_area, check_intersection, check_edge) pour ajouter un nouvelle CellArea à une Validation existante.

from aspose.cells import CellArea, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
workbook = Workbook("ValidationsSample.xlsx")
# Access first worksheet.
worksheet = workbook.worksheets[0]
# Accessing the Validations collection of the worksheet
validation = worksheet.validations[0]
# Create your cell area.
cellArea = CellArea.create_cell_area("D5", "E7")
# Adding the cell area to Validation
validation.add_area(cellArea, False, False)
# Save the output workbook.
workbook.save("ValidationsSample_out.xlsx")

Les fichiers Excel source et de sortie sont joints pour référence.

Fichier source

Fichier de sortie

Sujets avancés