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 또는 호환 리더에 의해 적용됩니다. 라이브러리는 프로그래밍 방식으로 값이 설정될 때 런타임에서 검증 제약 조건을 평가하지 않습니다.