Praca z walidacją danych

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ć:

ValidationTypeOpis
WholeNumberOgraniczenie wartości całkowitej
DecimalOgraniczenie liczby zmiennoprzecinkowej
ListLista rozwijana z formuły lub zakresu
DateOgraniczenie wartości daty
TextLengthOgraniczenie długości ciągu
CustomNiestandardowa reguła oparta na formule

Styl alertu

Wyliczenie ValidationAlertType kontroluje zachowanie wyświetlane, gdy walidacja nie powiedzie się:

AlertStyleBehavior
StopBlokuje wprowadzanie i wyświetla okno dialogowe błędu
WarningWyświetla ostrzeżenie; użytkownik może zaakceptować lub odrzucić
InformationWyś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 i SetFormula2 dla 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::AreasOverlap przed dodaniem nowej reguły, aby sprawdzić nakładające się obszary walidacji w tym samym arkuszu.
  • WorkbookValidator::ValidateForSave jest wywoływany wewnętrznie przy zapisie; wywołaj go podczas rozwoju, aby wcześnie wykrywać problemy.

Typowe problemy

ProblemPrzyczynaNaprawa
Walidacja nie została zastosowana do komórkiObszar nie został dodanyWywoł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órkiUżyj AreasOverlap, aby wykrywać i rozwiązywać konflikty
ValidateForSave nie działaNiespójność modeluSprawdź i napraw zgłoszoną niespójność przed zapisaniem

API Reference Podsumowanie

Klasa/MetodaOpis
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::AreasOverlapSprawdź 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::ValidateForSaveSprawdzenie spójności przed zapisem

Zobacz także

 Polski