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:
| ValidationType | Popis: |
|---|---|
WholeNumber | Omezení celočíselné hodnoty |
Decimal | Omezení desetinné hodnoty |
List | Rozbalovací seznam z formule nebo rozsahu |
Date | Omezení hodnoty data |
TextLength | Omezení délky řetězce |
Custom | Vlastní pravidlo založené na vzorci |
Styl upozornění
Výčtový typ ValidationAlertType řídí chování zobrazené při selhání validace:
| AlertStyle | Behavior |
|---|---|
Stop | Blokuje vstup a zobrazuje chybový dialog |
Warning | Zobrazuje varování; uživatel může přijmout nebo odmítnout |
Information | Zobrazuje 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, takSetFormula2pro 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::AreasOverlappřed přidáním nového pravidla, abyste zkontrolovali překrývající se oblasti validace na stejném listu. WorkbookValidator::ValidateForSaveje 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ém | Příčina | Opravit |
|---|---|---|
| Validace nebyla použita na buňku | Oblast nebyla přidána | Zavolejte Validation::AddArea(area) s cílovým rozsahem |
| Rozbalovací nabídka se nezobrazuje | SetInCellDropDown(false) | Nastavte SetInCellDropDown(true) pro validaci seznamu |
| Pravidla se překrývají | Dvě pravidla pokrývají stejné buňky | Použijte AreasOverlap k detekci a vyřešení konfliktů |
| ValidateForSave selže | Nekonzistence modelu | Zkontrolujte a opravte nahlášenou nekonzistenci před uložením |
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
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::AreasOverlap | Zkontrolovat 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::ValidateForSave | Kontrola konzistence před uložením |