.NET에서 데이터 유효성 검증 작업하기
Aspose.Cells FOSS for .NET은 Worksheet.Validations(ValidationCollection)을 통해 셀 범위에 데이터 유효성 검사 규칙을 추가할 수 있게 합니다. Add(CellArea)를 호출하여 Validation 객체를 만들고 ValidationType를 사용해 Type을 설정합니다. 지원되는 유형에는 List, Decimal 및 Custom가 포함됩니다. dotnet add package Aspose.Cells_FOSS으로 설치합니다.
단계별 가이드
1단계: 패키지 설치
dotnet add package Aspose.Cells_FOSS2단계: 네임스페이스 가져오기
using Aspose.Cells_FOSS;3단계: 목록 드롭다운 검증 추가
CellArea을 CellArea.CreateCellArea()와 함께 생성하고, Worksheet.Validations에 추가한 다음, ValidationType.List을 Formula1에 쉼표로 구분된 목록으로 설정합니다.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Dropdown list for A1:A10
var listVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A1", "A10"))];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,In Progress,Closed\"";
listVal.InCellDropDown = true;
listVal.IgnoreBlank = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Choose a status from the dropdown";
wb.Save("list-validation.xlsx");
Console.WriteLine("List validation added.");4단계: 숫자 범위 검증 추가
ValidationType.Decimal를 OperatorType.Between 및 Formula1/Formula2와 함께 사용하여 숫자 입력을 제한합니다.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Decimal range validation for B1:B10 — allow 0 to 100
var numVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B1", "B10"))];
numVal.Type = ValidationType.Decimal;
numVal.Operator = OperatorType.Between;
numVal.Formula1 = "0";
numVal.Formula2 = "100";
numVal.ErrorTitle = "Out of Range";
numVal.ErrorMessage = "Please enter a number between 0 and 100.";
numVal.ShowError = true;
numVal.IgnoreBlank = true;
wb.Save("decimal-validation.xlsx");
Console.WriteLine("Decimal validation added.");5단계: 동일한 시트에서 여러 검증 결합
동일한 시트에 원하는 만큼의 검증을 추가하려면 Validations.Add()을 여러 번 호출하고, 각각 다른 CellArea을 사용하면 됩니다.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// List validation for column A (status)
var statusVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A2", "A100"))];
statusVal.Type = ValidationType.List;
statusVal.Formula1 = "\"New,Open,Closed\"";
statusVal.InCellDropDown = true;
// Decimal validation for column B (score)
var scoreVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B2", "B100"))];
scoreVal.Type = ValidationType.Decimal;
scoreVal.Operator = OperatorType.Between;
scoreVal.Formula1 = "0";
scoreVal.Formula2 = "10";
scoreVal.ShowError = true;
wb.Save("combined-validation.xlsx");
Console.WriteLine("Combined validations added to sheet.");일반적인 문제 및 해결책
Excel에서 저장 후 드롭다운이 표시되지 않습니다.
저장하기 전에 InCellDropDown = true이 Validation 객체에 설정되어 있는지 확인하십시오. 이 플래그가 true이고 ValidationType.List이 사용될 때만 Excel에서 드롭다운이 표시됩니다.
유효성 검사는 정의된 범위 외의 값을 허용합니다. 유효성 검사는 라이브러리가 아니라 Excel에 의해 적용됩니다. 유효성 검사 규칙을 설정해도 라이브러리가 셀에 어떤 값이든 기록하는 것을 방지하지 못합니다. 유효성 검사는 사용자가 Excel에 데이터를 입력할 때 적용됩니다.
Formula1 목록 검증에 대해 Excel에서 #NAME? 로 표시됩니다.
인라인 콤마 구분 목록의 경우, 문자열을 이스케이프된 따옴표로 감싸세요: Formula1 = "\"Option1,Option2,Option3\"". 내부 따옴표가 없으면 Excel은 값을 셀 참조 수식으로 처리합니다.
OperatorType.Between 적용이 올바르게 되지 않음.
Formula1(최소)와 Formula2(최대)가 모두 문자열로 설정되었는지 확인하십시오. Between에 대한 Formula2이 누락되면 상한이 정의되지 않습니다.
자주 묻는 질문
셀 범위(예: 명명된 범위)를 기준으로 유효성을 검사할 수 있나요?
Formula1을(를) "Sheet2!$A$1:$A$10"과 같은 셀 범위 참조로 설정합니다. 해당 범위의 값은 드롭다운 목록 소스로 사용됩니다.
유효성 검사가 라이브러리가 잘못된 값을 쓰는 것을 방지합니까?
아니오. 검증 규칙은 사용자가 데이터를 입력할 때 Excel에 의해 적용됩니다. Aspose.Cells FOSS 라이브러리는 Cell.PutValue()를 프로그래밍 방식으로 호출할 때 검증을 적용하지 않습니다.
검증 규칙을 어떻게 제거하나요?
Worksheet.Validations[index]을 통해 규칙에 액세스하고 ValidationCollection 작업을 사용하여 규칙을 관리하십시오. 또는 원하지 않는 규칙이 없는 새 워크북 모델을 만들 수 있습니다.
시트당 최대 검증 수는 얼마입니까?
XLSX 형식은 워크시트당 최대 65,530개의 검증 규칙을 지원합니다.