데이터 유효성 검사 작업
데이터 유효성 검증 작업
Aspose.Cells FOSS for C++는 Validation 및 ValidationCollection 클래스를 통해 워크시트에 셀 수준 데이터 유효성 검사 규칙을 추가하는 것을 지원합니다. WorkbookValidator 클래스는 저장 전 일관성 검사를 제공합니다.
유효성 검사 규칙 추가
워크시트의 유효성 검사 컬렉션에 접근하고 ValidationCollection::Add()을 사용하여 새 규칙을 추가합니다. 반환된 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;
}유효성 검사 유형
ValidationType 열거형은 적용할 수 있는 제약 조건의 종류를 정의합니다:
| ValidationType | 설명 |
|---|---|
WholeNumber | 정수 값 제약 |
Decimal | 부동소수점 제약 |
List | 수식 또는 범위에서 가져온 드롭다운 목록 |
Date | 날짜 값 제약 |
TextLength | 문자열 길이 제한 |
Custom | 수식 기반 사용자 정의 규칙 |
알림 스타일
ValidationAlertType 열거형은 검증이 실패했을 때 표시되는 동작을 제어합니다:
| AlertStyle | Behavior |
|---|---|
Stop | 입력을 차단하고 오류 대화 상자를 표시합니다 |
Warning | 경고를 표시합니다; 사용자는 수락하거나 거부할 수 있습니다 |
Information | 정보 툴팁을 표시합니다 |
Validation::SetAlertStyle(ValidationAlertType) 로 알림 스타일을 설정합니다.
셀에서 검증 조회
ValidationCollection::GetValidationInCell(row, col) 를 사용하여 특정 셀에 적용되는 검증 규칙을 찾습니다. 규칙이 적용되지 않으면 nullptr 를 반환합니다.
검증 규칙 제거
특정 셀 또는 범위 영역에서 검증을 제거합니다:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
저장 전 워크북 검증
WorkbookValidator::ValidateForSave 를 호출하여 저장 전에 워크북 모델에 대한 일관성 검사를 실행합니다. 이는 Workbook::Save 에 의해 자동으로 호출되지만 개발 중에 독립적으로 호출할 수도 있습니다:
WorkbookValidator validator;
validator.ValidateForSave(workbook);팁 및 모범 사례
- 범위 유형 유효성 검사를 위해
SetFormula1와SetFormula2을 모두 설정하고 (WholeNumber,Decimal,Date) 하한과 상한을 정의하십시오. SetIgnoreBlank(true)를 사용하면 빈 셀을 오류 없이 유효성 검사를 통과하도록 허용할 수 있습니다.- 새 규칙을 추가하기 전에
ValidationCollection::AreasOverlap를 호출하여 동일한 시트에서 겹치는 유효성 검사 영역이 있는지 확인합니다. WorkbookValidator::ValidateForSave는 저장 시 내부적으로 호출됩니다; 개발 중에 호출하여 문제를 조기에 발견하십시오.
일반적인 문제
| 문제 | 원인 | 수정 |
|---|---|---|
| 셀에 검증이 적용되지 않음 | 영역이 추가되지 않음 | 대상 범위와 함께 Validation::AddArea(area)를 호출합니다 |
| 드롭다운이 표시되지 않음 | SetInCellDropDown(false) | 목록 검증을 위해 SetInCellDropDown(true)을(를) 설정합니다. |
| 규칙이 겹칩니다 | 두 규칙이 같은 셀을 차지합니다 | 충돌을 감지하고 해결하려면 AreasOverlap를 사용하세요 |
| ValidateForSave가 실패합니다 | 모델 불일치 | 저장하기 전에 보고된 불일치를 검토하고 수정하세요 |
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
ValidationCollection::Add() | 새로운 빈 검증 규칙을 추가 |
ValidationCollection::GetValidationInCell(row, col) | 셀에 대한 검증 찾기 |
ValidationCollection::RemoveArea(area) | 범위에서 검증을 제거 |
ValidationCollection::RemoveACell(row, col) | 셀에서 유효성 검사를 제거 |
ValidationCollection::AreasOverlap | 겹치는 유효성 검사 영역을 확인 |
Validation::SetType(ValidationType) | 유효성 검사 유형을 설정합니다 |
Validation::SetFormula1(expr) | 하한값 또는 목록 소스를 설정합니다 |
Validation::SetFormula2(expr) | 상한값을 설정합니다 |
Validation::AddArea(area) | 범위에 규칙을 적용 |
Validation::RemoveArea(area) | 범위에서 규칙을 제거합니다 |
Validation::SetAlertStyle(style) | 정지/경고/정보 동작을 설정합니다 |
WorkbookValidator::ValidateForSave | 저장 전 일관성 검사 |