Praca z walidacją danych
Praca z walidacją danych
Aspose.Cells FOSS for C++ wspiera dodawanie reguł walidacji danych na poziomie komórki do arkuszy za pomocą klas Validation i ValidationCollection. Klasa WorkbookValidator zapewnia sprawdzenie spójności przed zapisem.
Dodawanie reguły walidacji
Uzyskaj dostęp do kolekcji walidacji dla arkusza i dodaj nową regułę przy użyciu ValidationCollection::Add(). Ustaw typ, formułę i docelowy obszar na zwróconym obiekcie 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 walidacji
Wyliczenie ValidationType definiuje rodzaje ograniczeń, które można zastosować:
| ValidationType | Opis |
|---|---|
WholeNumber | Ograniczenie wartości całkowitej |
Decimal | Ograniczenie liczby zmiennoprzecinkowej |
List | Lista rozwijana z formuły lub zakresu |
Date | Ograniczenie wartości daty |
TextLength | Ograniczenie długości ciągu |
Custom | Niestandardowa reguła oparta na formule |
Styl alertu
Wyliczenie ValidationAlertType kontroluje zachowanie wyświetlane, gdy walidacja nie powiedzie się:
| AlertStyle | Behavior |
|---|---|
Stop | Blokuje wprowadzanie i wyświetla okno dialogowe błędu |
Warning | Wyświetla ostrzeżenie; użytkownik może zaakceptować lub odrzucić |
Information | Wyświetla podpowiedź informacyjną |
Ustaw styl alertu za pomocą Validation::SetAlertStyle(ValidationAlertType).
Zapytanie o walidację w komórce
Użyj ValidationCollection::GetValidationInCell(row, col), aby znaleźć, która reguła walidacji dotyczy konkretnej komórki. Zwraca nullptr, jeśli żadna reguła nie ma zastosowania.
Usuwanie reguł walidacji
Usuń walidację z konkretnej komórki lub obszaru zakresu:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Walidacja skoroszytu przed zapisaniem
Wywołaj WorkbookValidator::ValidateForSave, aby przeprowadzić kontrolę spójności modelu skoroszytu przed zapisem. Jest to wywoływane automatycznie przez Workbook::Save, ale może być uruchomione niezależnie podczas rozwoju:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Wskazówki i najlepsze praktyki
- Zawsze ustaw zarówno
SetFormula1, jak iSetFormula2dla walidacji typu zakres (WholeNumber,Decimal,Date), aby określić dolne i górne granice. - Użyj
SetIgnoreBlank(true), aby zezwolić pustym komórkom przejść walidację bez wywoływania błędu. - Wywołaj
ValidationCollection::AreasOverlapprzed dodaniem nowej reguły, aby sprawdzić nakładające się obszary walidacji w tym samym arkuszu. WorkbookValidator::ValidateForSavejest wywoływany wewnętrznie przy zapisie; wywołaj go podczas rozwoju, aby wcześnie wykrywać problemy.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Walidacja nie została zastosowana do komórki | Obszar nie został dodany | Wywołaj Validation::AddArea(area) z zakresem docelowym |
| Menu rozwijane nie wyświetla się | SetInCellDropDown(false) | Ustaw SetInCellDropDown(true) dla walidacji list |
| Reguły nakładają się | Dwie reguły obejmują te same komórki | Użyj AreasOverlap, aby wykrywać i rozwiązywać konflikty |
| ValidateForSave nie działa | Niespójność modelu | Sprawdź i napraw zgłoszoną niespójność przed zapisaniem |
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
ValidationCollection::Add() | Dodaj nową pustą regułę walidacji |
ValidationCollection::GetValidationInCell(row, col) | Znajdź walidację dla komórki |
ValidationCollection::RemoveArea(area) | Usuń walidację z zakresu |
ValidationCollection::RemoveACell(row, col) | Usuń walidację z komórki |
ValidationCollection::AreasOverlap | Sprawdź nakładające się obszary walidacji |
Validation::SetType(ValidationType) | Ustaw typ walidacji |
Validation::SetFormula1(expr) | Ustaw dolną granicę lub źródło listy |
Validation::SetFormula2(expr) | Ustaw górną granicę |
Validation::AddArea(area) | Zastosuj regułę do zakresu |
Validation::RemoveArea(area) | Usuń regułę z zakresu |
Validation::SetAlertStyle(style) | Ustaw zachowanie stop/ostrzeżenie/informacja |
WorkbookValidator::ValidateForSave | Sprawdzenie spójności przed zapisem |