.NET에서 데이터 유효성 검사를 수행하는 방법
Aspose.Cells FOSS for .NET는 Worksheet.Validations(a 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에 추가한 다음, Formula1에서 쉼표로 구분된 목록으로 ValidationType.List를 설정합니다.
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에서 드롭다운이 표시되지 않습니다. Ensure InCellDropDown = true 에 설정됩니다 Validation 저장하기 전에 객체에 설정됩니다. 이 플래그가 있을 때만 Excel에서 드롭다운이 표시됩니다 true and ValidationType.List 사용됩니다.
유효성 검사는 정의된 범위 외의 값을 허용합니다. 유효성 검사는 라이브러리가 아니라 Excel에 의해 적용됩니다. 유효성 검사 규칙을 설정해도 라이브러리가 셀에 어떤 값이든 기록하는 것을 방지하지 못합니다. 유효성 검사는 사용자가 Excel에서 데이터를 입력할 때 적용됩니다.
Formula1 목록 유효성 검사의 경우 다음과 같이 표시됩니다 #NAME? Excel에서. 인라인 콤마 구분 목록의 경우, 문자열을 이스케이프된 따옴표로 감싸세요: Formula1 = "\"Option1,Option2,Option3\"". 내부 따옴표가 없으면, Excel은 값을 셀 참조 수식으로 간주합니다.
OperatorType.Between 올바르게 적용되지 않음. 두 항목을 모두 확인하십시오 Formula1 (minimum) 및 Formula2 (maximum) 를 문자열로 설정합니다. 누락된 Formula2 for Between 상한값이 정의되지 않은 상태로 남습니다.
자주 묻는 질문
셀 범위(예: 명명된 범위)를 기준으로 유효성을 검사할 수 있나요?
Set Formula1 to a cell range reference such as "Sheet2!$A$1:$A$10". 해당 범위의 값이 드롭다운 목록 소스로 사용됩니다.
유효성 검사가 라이브러리가 잘못된 값을 쓰는 것을 방지합니까?
아니오. 검증 규칙은 사용자가 데이터를 입력할 때 Excel에 의해 적용됩니다. Aspose.Cells FOSS 라이브러리는 Cell.PutValue()를 프로그래밍 방식으로 호출할 때 검증을 적용하지 않습니다.
검증 규칙을 어떻게 제거하나요?
규칙에 Worksheet.Validations[index]를 통해 접근하고 ValidationCollection 작업을 사용하여 규칙을 관리합니다. alternatively, 원하지 않는 규칙이 없는 새 워크북 모델을 생성합니다.
시트당 최대 검증 규칙 수는 얼마인가요?
XLSX 형식은 워크시트당 최대 65,530개의 검증 규칙을 지원합니다.