Travailler avec la validation des données

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 :

ValidationTypeDescription
WholeNumberLimitation de valeur intégrale
DecimalPoints de flottage limités
ListListe de descente d’une formule ou une gamme
DateDate de limitation
TextLengthLongueur de limitation
CustomRè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 :

AlertStylecomportement
StopBlocage de l’entrée et affichage d’un dialogue d’erreur
WarningAfficher un avertissement ; l’utilisateur peut accepter ou rejeter
InformationAfficher 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 SetFormula1 et SetFormula2 Pour 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::AreasOverlap avant d’ajouter une nouvelle règle pour vérifier les zones de validation sur la même feuille.
  • WorkbookValidator::ValidateForSave est appelé à l’intérieur sur la sauvegarde; invite pendant le développement pour prendre les problèmes tôt.

Les problèmes communs

ProblèmeCauseFixé
- La validation n’est pas appliquée à la celluleZone non ajoutéeAppel à Validation::AddArea(area) Avec la gamme cible
Drop-down ne montre pasSetInCellDropDown(false)Sélection SetInCellDropDown(true) Pour les validations de liste
Règles surlapDeux règles couvrent les mêmes cellulesUtiliser AreasOverlap Détecter et résoudre les conflits
Le défaut de la validationModèle d’inconsistanceRéviser et corriger l’inconsistance rapportée avant de sauver

Le résumé de référence API

Classes / MéthodesDescription
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::AreasOverlapVé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::ValidateForSaveVérification de la consistance pré-save

Voir aussi

 Français