Lucrarea cu validarea datelor
Lucrarea cu validarea datelor
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation și de: ValidationCollection Cursurile. WorkbookValidator clasa oferă o verificare a coerenței înainte de salvare.
Adăugarea unei reguli de validare
Accesați colectia de validare pentru o foaie de lucru și adăugați o nouă regulă folosind ValidationCollection::Add().Setarea tipului, formula și zona țintă pe retur Validation Obiectul:
#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;
}Tipuri de validare
În ceea ce priveşte ValidationType enumerarea definește tipurile de constrângeri care pot fi aplicate:
| ValidationType | Descriere: |
|---|---|
WholeNumber | Constrângere de valoare întreagă |
Decimal | Constrângere cu punct de plutire |
List | Lista descărcată dintr-o formulă sau o gamă de date |
Date | Constrângere pentru valoarea datei |
TextLength | Constrângere de lungime a șirului |
Custom | Regula de tip obișnuit bazată pe formule |
Stil de alertă
În ceea ce priveşte ValidationAlertType enumerarea controlează comportamentul prezentat atunci când validarea nu reușește:
| AlertStyle | Comportamentul |
|---|---|
Stop | Blochează accesul şi arată un dialog de erori . |
Warning | Arată un avertisment; utilizatorul poate accepta sau respinge |
Information | Arată un sfat de instrument informativ |
Setarea stilului de alertă cu: Validation::SetAlertStyle(ValidationAlertType).
Interogarea validării într-o celulă
Utilizare: ValidationCollection::GetValidationInCell(row, col) pentru a găsi care regula de validare se aplică unei celule specifice. nullptr dacă nu se aplică nicio regulă.
Îndepărtarea regulilor de validare
Îndepărtarea unei validări dintr-o anumită celulă sau zonă de intervale:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Validarea cărții de lucru înainte de salvare
Sună-mă. WorkbookValidator::ValidateForSave pentru a rula o verificare de consecvență pe modelul cărții de lucru înainte de salvare. Acest lucru este chemat automat prin Workbook::Save dar poate fi invocată independent în timpul dezvoltării:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Sfaturi şi cele mai bune practici
- Întotdeauna setat ambele
SetFormula1și de:SetFormula2pentru validările de tip gama (WholeNumber,Decimal,Date) pentru a defini limita inferioară și cea superioara. - Utilizare:
SetIgnoreBlank(true)să permită celulelor goale să treacă validarea fără a declanșa o eroare. - Sună-mă.
ValidationCollection::AreasOverlapînainte de adăugarea unei noi reguli pentru a verifica suprapunerea zonelor de validare pe aceeași foaie. WorkbookValidator::ValidateForSaveeste chemată intern la salvarea; apelați-o în timpul dezvoltării pentru a detecta problemele devreme.
Probleme comune
| Numărul de date | Cauza | Fixare |
|---|---|---|
| Validarea nu se aplică celulei | Suprafață neîncărcată | Sună-mă. Validation::AddArea(area) cu intervalul țintă |
| Nu apare lista de descărcare | SetInCellDropDown(false) | Setare SetInCellDropDown(true) pentru validarea listelor |
| Suprapusează-se regulile | Două reguli acoperă aceleași celule. | Utilizare: AreasOverlap detectarea și soluționarea conflictelor; |
| ValidateForSave nu funcționează. | Incoerență a modelului | Revizuirea și corectarea neconcordanței raportate înainte de salvare. |
Rezultatele de la data aplicării.
| Clasa/Metoda | Descriere: |
|---|---|
ValidationCollection::Add() | Adăuga o nouă regulă de validare goală |
ValidationCollection::GetValidationInCell(row, col) | Găsiți validarea pentru o celulă |
ValidationCollection::RemoveArea(area) | Îndepărtați validarea dintr-o gamă |
ValidationCollection::RemoveACell(row, col) | Îndepărtați validarea dintr-o celulă |
ValidationCollection::AreasOverlap | Verificarea suprapunerii zonelor de validare |
Validation::SetType(ValidationType) | Setarea tipului de validare |
Validation::SetFormula1(expr) | Setarea limitei inferioare sau a sursei listei |
Validation::SetFormula2(expr) | Setarea limitei superioare |
Validation::AddArea(area) | Aplicați regula la o gamă de date. |
Validation::RemoveArea(area) | Îndepărtați regula dintr-o gamă |
Validation::SetAlertStyle(style) | Setarea comportamentului de oprire/avertisment/informație |
WorkbookValidator::ValidateForSave | Verificarea coerenței înainte de salvare |