Trabajar con la validación de datos
Trabajar con la validación de datos
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation y ValidationCollection Las clases, el WorkbookValidator La clase proporciona un control de consistencia pre-salvo.
Adjuntar una regla de validación
Acceda a la colección de validación para una hoja de trabajo y añade una nueva regla utilizando ValidationCollection::Add().Configure el tipo, fórmula y área de destino en la parte devuelta. Validation Objetos :
#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;
}Tipos de validación
El ValidationType La enumeración define los tipos de restricciones que se pueden aplicar:
| ValidationType | Descripción |
|---|---|
WholeNumber | Condiciones de valor integral |
Decimal | Punto de flotación con restricción |
List | Lista de descenso de una fórmula o rango |
Date | El valor de la fecha es limitado |
TextLength | Extenso comprensión restringida |
Custom | Reglas de uso basadas en fórmulas |
Estilo de alerta
El ValidationAlertType La enumeración controla el comportamiento mostrado cuando la validación fracaso:
| AlertStyle | comportamiento |
|---|---|
Stop | Bloco entrada y muestra un diálogo de error |
Warning | Mostrar una advertencia; el usuario puede aceptar o rechazar |
Information | Mostrar una herramienta informativa |
Configura el estilo de alerta con Validation::SetAlertStyle(ValidationAlertType).
La validación en una célula
Uso ValidationCollection::GetValidationInCell(row, col) para determinar qué regla de validación se aplica a una célula específica. nullptr Si no se aplica ninguna regla.
Eliminar las reglas de validación
Remover una validación de una célula o área 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ón del libro de trabajo Pre-Save
llamadas WorkbookValidator::ValidateForSave para realizar un control de coherencia en el modelo del libro antes de ahorrar. esto se llama automáticamente por Workbook::Save Pero se puede invocar de forma independiente durante el desarrollo:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Consejos y mejores prácticas
- Siempre establece ambos
SetFormula1ySetFormula2Para la validación de los tipos de gama (WholeNumber,Decimal,Date- Definición de los límites inferiores y superiores. - Uso
SetIgnoreBlank(true)Permite que las células vacías pasen la validación sin provocar un error. - llamadas
ValidationCollection::AreasOverlapantes de agregar una nueva regla para comprobar si las zonas de validación sobre la misma hoja están superlapping. WorkbookValidator::ValidateForSaveSe llama internamente a la salvación; invoca durante el desarrollo para capturar problemas tempranos.
Problemas comunes
| Problemas | Causas | Fixado |
|---|---|---|
| Validación no aplicada a la célula | Zona no añadida | llamadas Validation::AddArea(area) Con el alcance de los objetivos |
| Descargar no mostrar | SetInCellDropDown(false) | Sitio SetInCellDropDown(true) Para la validación de listas |
| Reglas sobrecogidas | Dos reglas cubren las mismas células | Uso AreasOverlap Detectar y resolver conflictos |
| Validación de fallos | Modelos de inconsistencia | Revisa y corregirá la inconsistencia reportada antes de ahorrar |
Sumación de referencia API
| Clase / Método | Descripción |
|---|---|
ValidationCollection::Add() | Añade una nueva regla de validación vacía |
ValidationCollection::GetValidationInCell(row, col) | Encuentra la validación de una célula |
ValidationCollection::RemoveArea(area) | Eliminar la validación de una gama |
ValidationCollection::RemoveACell(row, col) | Eliminar la validación de una célula |
ValidationCollection::AreasOverlap | Verificar las áreas de validación sobrecongeladas |
Validation::SetType(ValidationType) | Definición del tipo de validación |
Validation::SetFormula1(expr) | Configura el límite inferior o la fuente de lista |
Validation::SetFormula2(expr) | Sitio de arriba ligado |
Validation::AddArea(area) | Aplique la regla a una rama |
Validation::RemoveArea(area) | Eliminar la regla de una rama |
Validation::SetAlertStyle(style) | Comportamiento de detección/aviso/información |
WorkbookValidator::ValidateForSave | Pre-Save Consistencia de control |