Come aggiungere la convalida dei dati a un foglio di calcolo in C++
Aspose.Cells FOSS per C++ supporta regole di convalida dei dati a livello di cella che limitano i valori che gli utenti possono inserire in celle o intervalli specifici. Le classi Validation, ValidationCollection e WorkbookValidator costituiscono la API di convalida.
Guida passo-passo
Passo 1: Configura la compilazione
cmake_minimum_required(VERSION 3.15)
project(DataValidation CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(DataValidation main.cpp)
target_link_libraries(DataValidation PRIVATE Aspose.Cells.Foss.Cpp)Passo 2: Includi gli header richiesti
#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;Passo 3: Accedi alla collezione di convalida
Recupera il ValidationCollection dal foglio di lavoro:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
return 0;
}Passaggio 4: Aggiungi una regola di convalida
Chiama ValidationCollection::Add() e configura l’oggetto Validation restituito:
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInputTitle("Enter Quantity");
v.SetInputMessage("Enter a whole number between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value must be between 1 and 100.");
v.SetShowInput(true);
v.SetShowError(true);
v.SetAlertStyle(ValidationAlertType::Stop);Passaggio 5: Applica la regola a un intervallo
Allega la convalida a un CellArea usando Validation::AddArea:
CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);Passaggio 6: Salva la cartella di lavoro
workbook.Save("validated.xlsx");
workbook.Dispose();Passaggio 7: Esegui la convalida pre-salvataggio (facoltativo)
Chiama WorkbookValidator::ValidateForSave durante lo sviluppo per rilevare problemi del modello prima del salvataggio:
WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");Problemi comuni e soluzioni
Validazione non visibile nel file salvato Ensure Validation::AddArea(area) viene chiamato dopo la configurazione della regola. Una regola senza area associata non viene serializzata.
Elenco a discesa non visualizzato Imposta v.SetInCellDropDown(true) e imposta v.SetType(ValidationType::List) with SetFormula1 che punta a un intervallo o a valori separati da virgola.
Aree di validazione sovrapposte Usa ValidationCollection::AreasOverlap per verificare la presenza di conflitti prima di aggiungere una nuova regola. Regole sovrapposte possono causare comportamenti inattesi in Excel.
Messaggio di input non visualizzato Assicurati che entrambi SetShowInput(true) and SetInputMessage("...") sono impostati. Una stringa di messaggio vuota sopprime la richiesta di input anche se SetShowInput(true) viene chiamato.
ValidateForSave riporta errori Esamina l’incoerenza segnalata. Le cause più comuni includono limiti di formula mancanti per le convalide di tipo intervallo e coordinate dell’area della cella non valide.
Domande frequenti
Quali tipi di validazione sono supportati?
L’enumerazione ValidationType include: WholeNumber, Decimal, List, Date, TextLength, Custom e Any.
Posso rimuovere una regola di convalida da un intervallo?
Sì. Usa ValidationCollection::RemoveArea(area) per rimuovere la regola da un intervallo, oppure RemoveACell(row, col) per una singola cella.
Posso applicare la stessa regola di convalida a più intervalli?
Sì. Chiama Validation::AddArea(area) più volte sullo stesso oggetto Validation per applicarla a intervalli aggiuntivi.
Quali stili di avviso sono disponibili?
ValidationAlertType include: Stop (blocca l’inserimento non valido), Warning (avverte ma consente l’inserimento) e Information (solo tooltip informativo).
La convalida funziona a runtime o solo in Excel?
Regole di convalida dei dati sono memorizzate nel file XLSX e applicate da Excel o da un lettore compatibile. La libreria non valuta i vincoli di convalida a runtime quando i valori sono impostati programmaticamente.