C++에서 스프레드시트에 데이터 유효성 검사 추가하는 방법

C++에서 스프레드시트에 데이터 유효성 검사 추가하는 방법

Aspose.Cells FOSS for C++는 사용자가 특정 셀이나 범위에 입력할 수 있는 값을 제한하는 셀 수준 데이터 유효성 검사 규칙을 지원합니다. Validation, ValidationCollection, 및 WorkbookValidator 클래스가 검증 API을 구성합니다.

단계별 가이드

1단계: 빌드 설정

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)

2단계: 필요한 헤더 포함

#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;

3단계: 검증 컬렉션에 접근

워크시트에서 ValidationCollection를 가져옵니다:

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

단계 4: 검증 규칙 추가

ValidationCollection::Add()을 호출하고 반환된 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);

단계 5: 규칙을 범위에 적용

검증을 CellArea에 Validation::AddArea를 사용해 연결합니다:

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

단계 6: 워크북 저장

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

단계 7: 저장 전 검증 실행 (선택 사항)

개발 중에 WorkbookValidator::ValidateForSave을 호출하여 저장 전에 모델 문제를 포착합니다:

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

일반적인 문제 및 해결 방법

저장된 파일에서 유효성 검사가 보이지 않음 Ensure Validation::AddArea(area) 규칙을 구성한 후에 호출됩니다. 연관된 영역이 없는 규칙은 직렬화되지 않습니다.

드롭다운 목록이 표시되지 않음 설정 v.SetInCellDropDown(true) 및 설정 v.SetType(ValidationType::List) with SetFormula1 범위 또는 쉼표로 구분된 값들을 가리킵니다.

겹치는 유효성 검사 영역 사용 ValidationCollection::AreasOverlap 새 규칙을 추가하기 전에 충돌을 확인합니다. 겹치는 규칙은 Excel에서 예기치 않은 동작을 일으킬 수 있습니다.

입력 메시지가 표시되지 않음 두 가지 모두 확인하십시오 SetShowInput(true) and SetInputMessage("...") 설정됩니다. 빈 메시지 문자열은 입력 프롬프트를 억제합니다, 비록 SetShowInput(true) 가 호출됩니다.

ValidateForSave 오류를 보고합니다 보고된 불일치를 검토하십시오. 일반적인 원인으로는 범위 유형 검증에 대한 수식 경계 누락 및 잘못된 셀 영역 좌표가 있습니다.

자주 묻는 질문

지원되는 검증 유형은 무엇입니까?

ValidationType 열거형에는 WholeNumber, Decimal, List, Date, TextLength, Custom, 및 Any이(가) 포함됩니다.

범위에서 유효성 검사 규칙을 제거할 수 있나요?

예. ValidationCollection::RemoveArea(area)을(를) 사용하여 범위에서 규칙을 제거하거나, 단일 셀의 경우 RemoveACell(row, col)을(를) 사용하십시오.

동일한 유효성 검사 규칙을 여러 범위에 적용할 수 있나요?

예. 동일한 Validation 객체에 대해 Validation::AddArea(area)을(를) 여러 번 호출하면 추가 범위에 적용할 수 있습니다.

사용 가능한 경고 스타일은 무엇인가요?

ValidationAlertType에는 Stop(잘못된 입력 차단), Warning(경고하지만 입력 허용), 및 Information(정보 툴팁만 제공)이 포함됩니다.

유효성 검사는 런타임에 작동하나요, 아니면 Excel에서만 작동하나요?

데이터 검증 규칙은 XLSX 파일에 저장되며 Excel 또는 호환 리더에 의해 적용됩니다. 라이브러리는 프로그래밍 방식으로 값이 설정될 때 런타임에서 검증 제약 조건을 평가하지 않습니다.

참조

 한국어