Jak dodać walidację danych do arkusza kalkulacyjnego w C++
Aspose.Cells FOSS dla C++ obsługuje reguły walidacji danych na poziomie komórek, które ograniczają, jakie wartości użytkownicy mogą wprowadzać w konkretnych komórkach lub zakresach. Klasy Validation, ValidationCollection i WorkbookValidator tworzą API walidacji.
Przewodnik krok po kroku
Krok 1: Skonfiguruj kompilację
cmake_minimum_required(VERSION 3.15)
project(DataValidation CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(DataValidation main.cpp)
target_link_libraries(DataValidation PRIVATE Aspose.Cells.Foss.Cpp)Krok 2: Dołącz wymagane nagłówki
#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;Krok 3: Uzyskaj dostęp do kolekcji walidacji
Pobierz ValidationCollection z arkusza:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
return 0;
}Krok 4: Dodaj regułę walidacji
Wywołaj ValidationCollection::Add() i skonfiguruj zwrócony obiekt Validation:
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInputTitle("Enter Quantity");
v.SetInputMessage("Enter a whole number between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value must be between 1 and 100.");
v.SetShowInput(true);
v.SetShowError(true);
v.SetAlertStyle(ValidationAlertType::Stop);Krok 5: Zastosuj regułę do zakresu
Dołącz walidację do CellArea przy użyciu Validation::AddArea:
CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);Krok 6: Zapisz skoroszyt
workbook.Save("validated.xlsx");
workbook.Dispose();Krok 7: Uruchom walidację przed zapisem (opcjonalnie)
Wywołaj WorkbookValidator::ValidateForSave podczas tworzenia, aby wykryć problemy modelu przed zapisem:
WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");Typowe problemy i rozwiązania
Walidacja nie jest widoczna w zapisanym pliku Ensure Validation::AddArea(area) jest wywoływane po skonfigurowaniu reguły. Reguła bez powiązanego obszaru nie jest serializowana.
Lista rozwijana się nie wyświetla Ustaw v.SetInCellDropDown(true) i ustaw v.SetType(ValidationType::List) with SetFormula1 wskazujący na zakres lub wartości oddzielone przecinkami.
Nakładające się obszary walidacji Użyj ValidationCollection::AreasOverlap aby sprawdzić konflikty przed dodaniem nowej reguły. Nakładające się reguły mogą powodować nieoczekiwane zachowanie w Excelu.
Komunikat wejściowy nie pojawia się Upewnij się, że oba SetShowInput(true) and SetInputMessage("...") są ustawione. Pusty ciąg komunikatu tłumi monit wejściowy, nawet jeśli SetShowInput(true) jest wywoływany.
ValidateForSave zgłasza błędy Sprawdź zgłoszoną niezgodność. Częste przyczyny to brak granic formuły dla walidacji typu zakres oraz nieprawidłowe współrzędne obszaru komórek.
Najczęściej zadawane pytania
Jakie typy walidacji są obsługiwane?
Wyliczenie ValidationType zawiera: WholeNumber, Decimal, List, Date, TextLength, Custom oraz Any.
Czy mogę usunąć regułę walidacji z zakresu?
Tak. Użyj ValidationCollection::RemoveArea(area), aby usunąć regułę z zakresu, lub RemoveACell(row, col) dla pojedynczej komórki.
Czy mogę zastosować tę samą regułę walidacji do wielu zakresów?
Tak. Wywołaj Validation::AddArea(area) wielokrotnie na tym samym obiekcie Validation, aby zastosować go do dodatkowych zakresów.
Jakie style alertów są dostępne?
ValidationAlertType zawiera: Stop (blokuje nieprawidłowy wpis), Warning (ostrzeżenie, ale pozwala na wpis), oraz Information (tylko informacyjny podpowiedź).
Czy walidacja działa w czasie wykonywania, czy tylko w Excelu?
Reguły walidacji danych są przechowywane w pliku XLSX i egzekwowane przez Excel lub kompatybilny czytnik. Biblioteka nie ocenia ograniczeń walidacji w czasie wykonywania, gdy wartości są ustawiane programowo.