Treballar amb la validació de dades
Treballar amb la validació de dades
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation i de la ValidationCollection Les classes. WorkbookValidator la classe proporciona una verificació de coherència prèvia a l’enregistrament.
Ajuntar una regla de validació
Accedeix a la col·lecció de validació d’ una fitxa i afegir una nova regla utilitzant ValidationCollection::Add(). Configurar el tipus, la fórmula i l’àrea objectiu en el retorn de les dades. Validation objecte:
#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;
}Tipus de validació
El ValidationType L’enumeració defineix els tipus de restriccions que es poden aplicar:
| ValidationType | Description |
|---|---|
WholeNumber | Constrenció de valor enteru |
Decimal | Constrenció de punt flotant |
List | Lista desplegable d’una fórmula o gamma |
Date | Constrenció de valor de data |
TextLength | Restricció de longitud de cadena |
Custom | Regla de costum basada en fórmula |
Estilo d’alerta
El ValidationAlertType Enumeration controla el comportament mostrat quan la validació falla:
| AlertStyle | Behavior |
|---|---|
Stop | Bloqueja l’entrada i mostra un diàleg d’error |
Warning | Mostra un avís; l’usuari pot acceptar o rebutjar |
Information | Mostra una guia d’informació |
Configurar l’estil d’alerta amb: Validation::SetAlertStyle(ValidationAlertType).
Requerir la validació en una cèl·lula
Utilització: ValidationCollection::GetValidationInCell(row, col) Per trobar quina regla de validació s’aplica a una cel·la específica. Retorna nullptr si no s’aplica cap regla.
Eliminació de les regles de validació
Retirar una validació d’una cel·la o zona específica:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Validació de llibres d’obra abans de guardar
Call WorkbookValidator::ValidateForSave Per executar una comprovació de coherència en el model del llibre de treball abans d’estalviar. Això es diu automàticament per: Workbook::Save però es pot invocar de forma independent durant el desenvolupament:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Consells i millors pràctiques
- Sempre posar ambdues.
SetFormula1i de laSetFormula2per a les validacions de tipus d’interval (WholeNumber,Decimal,Date) per definir els límits inferior i superior. - Utilització:
SetIgnoreBlank(true)Per permetre que les cèl·lules buides passi la validació sense provocar un error. - Call
ValidationCollection::AreasOverlapabans d’afegir una nova regla per comprovar si hi ha zones de validació que es superposin en la mateixa ficha. WorkbookValidator::ValidateForSaveés cridat internament en salvar; invocar-lo durant el desenvolupament per detectar problemes de manera primerenca.
Problemàtiques comuns
| Issue | Cause | Correcció |
|---|---|---|
| Validació no aplicada a la cel·la | Superfície no afegida | Call Validation::AddArea(area) amb el rang objectiu |
| No apareix el cartell de baixada | SetInCellDropDown(false) | Set de punts SetInCellDropDown(true) per a les validacions de llistes |
| Sovracorrecció de les normes | Dues regles cobreixen les mateixes cel·les. | Utilització: AreasOverlap detectar i resoldre conflictes; |
| No s’ha aconseguit validar per guardar | Incoherència del model | Revisar i corregir la inconsistència comunicada abans de guardar. |
Resum de referència d’API
| Classe/mètode | Description |
|---|---|
ValidationCollection::Add() | Afegir una nova regla de validació buida |
ValidationCollection::GetValidationInCell(row, col) | Buscar la validació d’una cèl·lula |
ValidationCollection::RemoveArea(area) | Eliminar la validació d’un interval |
ValidationCollection::RemoveACell(row, col) | Eliminar la validació d’una cel·la |
ValidationCollection::AreasOverlap | Verificació de superposició d’àrees de validació |
Validation::SetType(ValidationType) | Ajustar el tipus de validació |
Validation::SetFormula1(expr) | Ajustar el límit inferior o la font de listes |
Validation::SetFormula2(expr) | Ajustar el límit superior |
Validation::AddArea(area) | Aplicar la regla a un interval |
Validation::RemoveArea(area) | Eliminar la regla d’un interval |
Validation::SetAlertStyle(style) | Ajustar el comportament d’atur/advertiment/informació |
WorkbookValidator::ValidateForSave | Verificació de la coherència abans d’emmagatzemar |