Lavorare con la convalida dei dati

Lavorare con la convalida dei dati

Lavorare con la convalida dei dati

Aspose.Cells FOSS for C++ supporta l’aggiunta di regole di convalida dei dati a livello di cella ai fogli di lavoro tramite le classi Validation e ValidationCollection. La classe WorkbookValidator fornisce un controllo di coerenza prima del salvataggio.


Aggiungere una regola di convalida

Accedi alla raccolta di convalida di un foglio di lavoro e aggiungi una nuova regola usando ValidationCollection::Add(). Imposta il tipo, la formula e l’area di destinazione sull’oggetto Validation restituito:

#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;
}

Tipi di convalida

L’enumerazione ValidationType definisce i tipi di vincoli che possono essere applicati:

ValidationTypeDescrizione
WholeNumberVincolo di valore intero
DecimalVincolo a virgola mobile
ListElenco a discesa da una formula o intervallo
DateVincolo di valore data
TextLengthVincolo di lunghezza della stringa
CustomRegola personalizzata basata su formula

Stile di avviso

L’enumerazione ValidationAlertType controlla il comportamento mostrato quando la convalida fallisce:

AlertStyleBehavior
StopBlocca l’immissione e mostra una finestra di errore
WarningMostra un avviso; l’utente può accettare o rifiutare
InformationMostra un tooltip informativo

Imposta lo stile di avviso con Validation::SetAlertStyle(ValidationAlertType).


Interrogare la convalida in una cella

Usa ValidationCollection::GetValidationInCell(row, col) per trovare quale regola di convalida si applica a una cella specifica. Restituisce nullptr se nessuna regola si applica.


Rimozione delle regole di convalida

Rimuovi una convalida da una cella o area di intervallo specifica:

CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)

Convalida della cartella di lavoro prima del salvataggio

Chiama WorkbookValidator::ValidateForSave per eseguire un controllo di coerenza sul modello della cartella di lavoro prima del salvataggio. Questo viene chiamato automaticamente da Workbook::Save ma può essere invocato indipendentemente durante lo sviluppo:

WorkbookValidator validator;
validator.ValidateForSave(workbook);

Suggerimenti e migliori pratiche

  • Imposta sempre sia SetFormula1 sia SetFormula2 per le convalide di tipo intervallo (WholeNumber, Decimal, Date) per definire i limiti inferiore e superiore.
  • Usa SetIgnoreBlank(true) per consentire alle celle vuote di superare la convalida senza generare un errore.
  • Chiama ValidationCollection::AreasOverlap prima di aggiungere una nuova regola per verificare la presenza di aree di convalida sovrapposte nello stesso foglio.
  • WorkbookValidator::ValidateForSave viene chiamato internamente al salvataggio; invocalo durante lo sviluppo per rilevare i problemi in anticipo.

Problemi comuni

ProblemaCausaCorrezione
Validazione non applicata alla cellaArea non aggiuntaChiama Validation::AddArea(area) con l’intervallo di destinazione
Menu a discesa non visualizzatoSetInCellDropDown(false)Imposta SetInCellDropDown(true) per le convalide della lista
Le regole si sovrappongonoDue regole coprono le stesse celleUsa AreasOverlap per rilevare e risolvere i conflitti
ValidateForSave fallisceIncoerenza del modelloRivedi e correggi l’incoerenza segnalata prima di salvare

Riepilogo API Reference

Classe/MetodoDescrizione
ValidationCollection::Add()Aggiungi una nuova regola di convalida vuota
ValidationCollection::GetValidationInCell(row, col)Trova la convalida per una cella
ValidationCollection::RemoveArea(area)Rimuovi la convalida da un intervallo
ValidationCollection::RemoveACell(row, col)Rimuovi la convalida da una cella
ValidationCollection::AreasOverlapVerifica la presenza di aree di convalida sovrapposte
Validation::SetType(ValidationType)Imposta il tipo di convalida
Validation::SetFormula1(expr)Imposta il limite inferiore o l’origine dell’elenco
Validation::SetFormula2(expr)Imposta limite superiore
Validation::AddArea(area)Applica la regola a un intervallo
Validation::RemoveArea(area)Rimuovi la regola da un intervallo
Validation::SetAlertStyle(style)Imposta il comportamento di interruzione/avviso/informazione
WorkbookValidator::ValidateForSaveVerifica di coerenza pre-salvataggio

Vedi anche

 Italiano