Trabalhar com a validação de dados

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:

ValidationTypeDescrição:
WholeNumberConstrangimento de valor inteiro
DecimalConstrangimento de ponto flutuante
ListLista suspensa de uma fórmula ou gama
DateConstrangimento de valor da data
TextLengthConstrangimento de comprimento da cadeia
CustomRegra aduaneira baseada em fórmula

Estilo de alerta

A Comissão ValidationAlertType Enumeration controla o comportamento exibido quando a validação falha:

AlertStyleComportamento
StopBloqueia a entrada e mostra um diálogo de erro
WarningMostra um aviso; o utilizador pode aceitar ou rejeitar
InformationMostra 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. SetFormula1 e a) SetFormula2 para 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::AreasOverlap antes 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ãoCausa da morteCorreção
Validação não aplicada à célulaÁrea não acrescentadaChama-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 regrasDuas regras abrangem as mesmas células.Utilização: AreasOverlap Detectar e resolver conflitos;
Falha no ValidateForSaveInconsistência do modeloAnterior a salvação, rever e corrigir as inconsistências relatadas.

Resumo de referência da API

Classe/MétodoDescriçã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::AreasOverlapVerificaçã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::ValidateForSaveVerificação de coerência antes da gravação

Ver também:

 Português