Travailler avec la validation des données
Travailler avec la validation des données
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation et ValidationCollection Les classes, le WorkbookValidator La classe fournit un contrôle de conséquences pré-sauvée.
Ajouter une règle de validation
Accès à la collection de validation pour un feuille de travail et ajoutez une nouvelle règle en utilisant ValidationCollection::Add().Configurez le type, la formule et l’espace cible sur le retourné Validation Objet :
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/ValidationCollection.h"
#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInCellDropDown(false);
v.SetInputTitle("Enter Value");
v.SetInputMessage("Value must be between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value is out of range.");
v.SetShowInput(true);
v.SetShowError(true);
CellArea area = CellArea::CreateCellArea("B2", "B10");
v.AddArea(area);
workbook.Save("validated.xlsx");
return 0;
}Types de validation
Le ValidationType L’enumeration définit les types de restrictions qui peuvent être appliquées :
| ValidationType | Description |
|---|---|
WholeNumber | Limitation de valeur intégrale |
Decimal | Points de flottage limités |
List | Liste de descente d’une formule ou une gamme |
Date | Date de limitation |
TextLength | Longueur de limitation |
Custom | Règles de formulation basées sur la formule |
Style de l’alerte
Le ValidationAlertType L’enumeration contrôle le comportement indiqué lorsque la validation échoue :
| AlertStyle | comportement |
|---|---|
Stop | Blocage de l’entrée et affichage d’un dialogue d’erreur |
Warning | Afficher un avertissement ; l’utilisateur peut accepter ou rejeter |
Information | Afficher un outil informatif |
Définir le style d’alerte avec Validation::SetAlertStyle(ValidationAlertType).
- Validation de la demande dans une cellule
Utiliser ValidationCollection::GetValidationInCell(row, col) pour savoir quelle règle de validation s’applique à une cellule spécifique. nullptr Si aucune règle n’est appliquée.
Suppression des règles de validation
Supprimer une validation d’une cellule ou de la zone spécifique :
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Validation du livre de travail pré-save
Appel à WorkbookValidator::ValidateForSave pour effectuer un contrôle de cohérence sur le modèle du livre d’oeuvre avant de sauvegarder.Cela est appelé automatiquement par Workbook::Save Mais il peut être invocé indépendamment pendant le développement:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Conseils et meilleures pratiques
- Toujours les deux
SetFormula1etSetFormula2Pour les évaluations de la gamme (WholeNumber,Decimal,DateDéfinir les limites inférieures et supérieurs. - Utiliser
SetIgnoreBlank(true)Pour permettre aux cellules vides de passer la validation sans déclencher un erreur. - Appel à
ValidationCollection::AreasOverlapavant d’ajouter une nouvelle règle pour vérifier les zones de validation sur la même feuille. WorkbookValidator::ValidateForSaveest appelé à l’intérieur sur la sauvegarde; invite pendant le développement pour prendre les problèmes tôt.
Les problèmes communs
| Problème | Cause | Fixé |
|---|---|---|
| - La validation n’est pas appliquée à la cellule | Zone non ajoutée | Appel à Validation::AddArea(area) Avec la gamme cible |
| Drop-down ne montre pas | SetInCellDropDown(false) | Sélection SetInCellDropDown(true) Pour les validations de liste |
| Règles surlap | Deux règles couvrent les mêmes cellules | Utiliser AreasOverlap Détecter et résoudre les conflits |
| Le défaut de la validation | Modèle d’inconsistance | Réviser et corriger l’inconsistance rapportée avant de sauver |
Le résumé de référence API
| Classes / Méthodes | Description |
|---|---|
ValidationCollection::Add() | Ajoutez une nouvelle règle de validation vide |
ValidationCollection::GetValidationInCell(row, col) | Trouver la validation pour une cellule |
ValidationCollection::RemoveArea(area) | Supprimer la validation d’une gamme |
ValidationCollection::RemoveACell(row, col) | Supprimer la validation d’une cellule |
ValidationCollection::AreasOverlap | Vérifier les zones de validation surchargées |
Validation::SetType(ValidationType) | Définir le type de validation |
Validation::SetFormula1(expr) | Définir la limite inférieure ou source de liste |
Validation::SetFormula2(expr) | Démarrage au-dessus de la boîte |
Validation::AddArea(area) | Appliquer la règle à un range |
Validation::RemoveArea(area) | Supprimer la règle d’une gamme |
Validation::SetAlertStyle(style) | Démarrer le comportement d’alerte/stop |
WorkbookValidator::ValidateForSave | Vérification de la consistance pré-save |