Práce s ověřováním dat

Práce s ověřováním dat

Práce s ověřováním dat

Aspose.Cells FOSS pro C++ podporuje přidávání pravidel ověřování dat na úrovni buňky do tabulek pomocí tříd Validation a ValidationCollection. Třída WorkbookValidator poskytuje kontrolu konzistence před uložením.


Přidání pravidla ověřování

Získejte přístup ke sbírce ověřování pro list a přidejte nové pravidlo pomocí ValidationCollection::Add(). Nastavte typ, vzorec a cílovou oblast na vráceném objektu Validation:

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

Typy ověřování

Výčtový typ ValidationType definuje druhy omezení, která lze použít:

ValidationTypePopis:
WholeNumberOmezení celočíselné hodnoty
DecimalOmezení desetinné hodnoty
ListRozbalovací seznam z formule nebo rozsahu
DateOmezení hodnoty data
TextLengthOmezení délky řetězce
CustomVlastní pravidlo založené na vzorci

Styl upozornění

Výčtový typ ValidationAlertType řídí chování zobrazené při selhání validace:

AlertStyleBehavior
StopBlokuje vstup a zobrazuje chybový dialog
WarningZobrazuje varování; uživatel může přijmout nebo odmítnout
InformationZobrazuje informační tooltip

Nastavte styl upozornění pomocí Validation::SetAlertStyle(ValidationAlertType).


Dotazování validace v buňce

Použijte ValidationCollection::GetValidationInCell(row, col) k nalezení, která validační pravidla se vztahují na konkrétní buňku. Vrátí nullptr, pokud se žádné pravidlo nevztahuje.


Odstraňování validačních pravidel

Odstraňte validaci ze specifické buňky nebo oblasti rozsahu:

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

Validace sešitu před uložením

Zavolejte WorkbookValidator::ValidateForSave k provedení kontroly konzistence modelu sešitu před uložením. Toto je voláno automaticky funkcí Workbook::Save, ale může být vyvoláno samostatně během vývoje:

WorkbookValidator validator;
validator.ValidateForSave(workbook);

Tipy a osvědčené postupy

  • Vždy nastavte jak SetFormula1, tak SetFormula2 pro validace typu rozsah (WholeNumber, Decimal, Date), abyste definovali dolní a horní hranice.
  • Použijte SetIgnoreBlank(true), aby prázdné buňky prošly validací bez vyvolání chyby.
  • Zavolejte ValidationCollection::AreasOverlap před přidáním nového pravidla, abyste zkontrolovali překrývající se oblasti validace na stejném listu.
  • WorkbookValidator::ValidateForSave je voláno interně při uložení; vyvolejte jej během vývoje, aby se problémy zachytily včas.

Běžné problémy

ProblémPříčinaOpravit
Validace nebyla použita na buňkuOblast nebyla přidánaZavolejte Validation::AddArea(area) s cílovým rozsahem
Rozbalovací nabídka se nezobrazujeSetInCellDropDown(false)Nastavte SetInCellDropDown(true) pro validaci seznamu
Pravidla se překrývajíDvě pravidla pokrývají stejné buňkyPoužijte AreasOverlap k detekci a vyřešení konfliktů
ValidateForSave selžeNekonzistence modeluZkontrolujte a opravte nahlášenou nekonzistenci před uložením

API Reference Shrnutí

Třída/MetodaPopis:
ValidationCollection::Add()Přidejte nové prázdné validační pravidlo
ValidationCollection::GetValidationInCell(row, col)Najít ověření buňky
ValidationCollection::RemoveArea(area)Odebrat ověření z rozsahu
ValidationCollection::RemoveACell(row, col)Odebrat ověření z buňky
ValidationCollection::AreasOverlapZkontrolovat překrývající se oblasti ověření
Validation::SetType(ValidationType)Nastavte typ validace
Validation::SetFormula1(expr)Nastavte dolní hranici nebo zdroj seznamu
Validation::SetFormula2(expr)Nastavit horní mez
Validation::AddArea(area)Použít pravidlo na rozsah
Validation::RemoveArea(area)Odstranit pravidlo z rozsahu
Validation::SetAlertStyle(style)Nastavit chování při zastavení/varování/informaci
WorkbookValidator::ValidateForSaveKontrola konzistence před uložením

Viz také:

 Čeština