Trabalhar com a validação de dados
Trabalhar com a validação de dados
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation e a) ValidationCollection As aulas. WorkbookValidator A classe fornece uma verificação de consistência pré-salvamento.
Adicionar uma regra de validação
Acesse a coleção de validações para uma folha de cálculo e adicione uma nova regra usando: ValidationCollection::Add().Configurar o tipo, a fórmula e área alvo no retorno de dados. Validation Objeto:
#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 validação
A Comissão ValidationType A enumeração define os tipos de restrições que podem ser aplicadas:
| ValidationType | Descrição: |
|---|---|
WholeNumber | Constrangimento de valor inteiro |
Decimal | Constrangimento de ponto flutuante |
List | Lista suspensa de uma fórmula ou gama |
Date | Constrangimento de valor da data |
TextLength | Constrangimento de comprimento da cadeia |
Custom | Regra aduaneira baseada em fórmula |
Estilo de alerta
A Comissão ValidationAlertType Enumeration controla o comportamento exibido quando a validação falha:
| AlertStyle | Comportamento |
|---|---|
Stop | Bloqueia a entrada e mostra um diálogo de erro |
Warning | Mostra um aviso; o utilizador pode aceitar ou rejeitar |
Information | Mostra uma dica de ferramenta informativa |
Configurar o estilo de alerta com: Validation::SetAlertStyle(ValidationAlertType).
Interrogação de validação numa célula
Utilização: ValidationCollection::GetValidationInCell(row, col) Para determinar qual regra de validação se aplica a uma célula específica. Retorna nullptr se não for aplicável nenhuma regra.
Eliminação das regras de validação
Remover uma validação de uma célula ou á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)
Validação de bloco de trabalho antes da gravação
Chama-me . WorkbookValidator::ValidateForSave para executar uma verificação de consistência no modelo do livro antes de salvar. Isto é chamado automaticamente por Workbook::Save mas pode ser invocada de forma independente durante o desenvolvimento:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Dicas e melhores práticas
- Sempre coloque ambos.
SetFormula1e a)SetFormula2para validações de tipo de gama (WholeNumber,Decimal,Date) para definir os limites inferior e superior. - Utilização:
SetIgnoreBlank(true)permitir que as células vazias passem pela validação sem provocar um erro. - Chama-me .
ValidationCollection::AreasOverlapantes de adicionar uma nova regra para verificar se as áreas de validação sobrepõem-se na mesma folha. WorkbookValidator::ValidateForSaveé chamado internamente no save; invocar durante o desenvolvimento para detectar problemas precocemente.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
| Validação não aplicada à célula | Área não acrescentada | Chama-me . Validation::AddArea(area) com a faixa-alvo |
| Descarregar não está a aparecer. | SetInCellDropDown(false) | Set (s) SetInCellDropDown(true) para validações de listas |
| Superposição de regras | Duas regras abrangem as mesmas células. | Utilização: AreasOverlap Detectar e resolver conflitos; |
| Falha no ValidateForSave | Inconsistência do modelo | Anterior a salvação, rever e corrigir as inconsistências relatadas. |
Resumo de referência da API
| Classe/Método | Descrição: |
|---|---|
ValidationCollection::Add() | Adicionar uma nova regra de validação vazia |
ValidationCollection::GetValidationInCell(row, col) | Encontrar validação para uma célula |
ValidationCollection::RemoveArea(area) | Remover a validação de um intervalo |
ValidationCollection::RemoveACell(row, col) | Remover a validação de uma célula |
ValidationCollection::AreasOverlap | Verificação de áreas de validação sobrepostas |
Validation::SetType(ValidationType) | Indicar o tipo de validação |
Validation::SetFormula1(expr) | Indicar limite inferior ou fonte de lista |
Validation::SetFormula2(expr) | Estabelecer limite superior |
Validation::AddArea(area) | Aplicar a regra para um intervalo |
Validation::RemoveArea(area) | Remover a regra de um intervalo |
Validation::SetAlertStyle(style) | Classificação do comportamento de parada/aviso/informação |
WorkbookValidator::ValidateForSave | Verificação de coerência antes da gravação |