Jak přidat ověření dat do tabulky v C++

Jak přidat ověření dat do tabulky v C++

Aspose.Cells FOSS pro C++ podporuje pravidla validace dat na úrovni buňky, která omezují, jaké hodnoty mohou uživatelé zadávat do konkrétních buněk nebo oblastí. Třídy Validation, ValidationCollection a WorkbookValidator tvoří validační API.

Návod krok za krokem

Krok 1: Nastavte sestavení

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: Zahrňte požadované hlavičky

#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: Přistupte ke sbírce validací

Získejte ValidationCollection z pracovního listu:

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    ValidationCollection& validations = sheet.GetValidations();
    return 0;
}

Krok 4: Přidejte pravidlo ověření

Zavolejte ValidationCollection::Add() a nakonfigurujte vrácený objekt 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: Použijte pravidlo na oblast

Připojte ověření k CellArea pomocí Validation::AddArea:

CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);

Krok 6: Uložte sešit

workbook.Save("validated.xlsx");
workbook.Dispose();

Krok 7: Spusťte před uložením ověření (volitelné)

Zavolejte WorkbookValidator::ValidateForSave během vývoje, abyste zachytili problémy modelu před uložením:

WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");

Běžné problémy a opravy

Validace není viditelná v uloženém souboru Ensure Validation::AddArea(area) je voláno po nastavení pravidla. Pravidlo bez přidružené oblasti není serializováno.

Rozbalovací seznam se nezobrazuje Nastavit v.SetInCellDropDown(true) a nastavit v.SetType(ValidationType::List) with SetFormula1 ukazující na rozsah nebo hodnoty oddělené čárkou.

Překrývající se oblasti validace Použít ValidationCollection::AreasOverlap ke kontrole konfliktů před přidáním nového pravidla. Překrývající se pravidla mohou v Excelu vést k neočekávanému chování.

Vstupní zpráva se nezobrazuje Zajistěte, že oba SetShowInput(true) and SetInputMessage("...") jsou nastaveny. Prázdný řetězec zprávy potlačuje výzvu k zadání, i když SetShowInput(true) je voláno.

ValidateForSave hlásí chyby Zkontrolujte nahlášenou nesrovnalost. Časté příčiny zahrnují chybějící hranice vzorce pro validace typu rozsah a neplatné souřadnice oblasti buněk.

Často kladené otázky

Jaké typy validace jsou podporovány?

Výčtový typ ValidationType zahrnuje: WholeNumber, Decimal, List, Date, TextLength, Custom a Any.

Mohu odebrat pravidlo ověření z rozsahu?

Ano. Použijte ValidationCollection::RemoveArea(area) k odebrání pravidla z rozsahu nebo RemoveACell(row, col) pro jednotlivou buňku.

Mohu použít stejné pravidlo ověření na více rozsahů?

Ano. Zavolejte Validation::AddArea(area) vícekrát na stejném objektu Validation, abyste ho použili na další rozsahy.

Jaké styly výstrah jsou k dispozici?

ValidationAlertType zahrnuje: Stop (blokuje neplatný vstup), Warning (varuje, ale povoluje vstup) a Information (pouze informační tooltip).

Funguje ověření během běhu, nebo pouze v Excelu?

Pravidla pro validaci dat jsou uložena v souboru XLSX a vynucována aplikací Excel nebo kompatibilním čtečkou. Knihovna nevyhodnocuje validační omezení za běhu, když jsou hodnoty nastaveny programově.

Viz také:

 Čeština