نحوه کار با اعتبارسنجی دادهها در .NET
Aspose.Cells FOSS for .NET به شما امکان میدهد قوانین اعتبارسنجی داده را به بازههای سلولی از طریق Worksheet.Validations (یک ValidationCollection) اضافه کنید. با فراخوانی Add(CellArea) یک شیء Validation ایجاد کنید و Type آن را با استفاده از ValidationType تنظیم کنید. انواع پشتیبانیشده شامل List، Decimal و Custom هستند. با dotnet add package Aspose.Cells_FOSS نصب کنید.
راهنمای گام به گام
مرحله 1: نصب بسته
dotnet add package Aspose.Cells_FOSSمرحله ۲: وارد کردن فضای نام
using Aspose.Cells_FOSS;مرحله ۳: افزودن اعتبارسنجی فهرست کشویی
یک 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.");مرحله ۴: افزودن اعتبارسنجی بازه عددی
از 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.");مسائل رایج و راهحلها
منوی کشویی پس از ذخیره در اکسل ظاهر نمیشود.
اطمینان حاصل کنید InCellDropDown = true بر روی شیء Validation قبل از ذخیرهسازی تنظیم شده باشد. منوی کشویی فقط زمانی در اکسل قابل مشاهده است که این پرچم true باشد و ValidationType.List استفاده شود.
اعتبارسنجی اجازه میدهد مقادیر خارج از بازه تعریفشده باشند.
اعتبارسنجی توسط اکسل اعمال میشود، نه توسط کتابخانه. تنظیم قوانین اعتبارسنجی مانع کتابخانه از نوشتن هر مقدار به سلول نمیشود. اعتبارسنجی زمانی اعمال میشود که کاربر دادهها را در اکسل وارد کند.
Formula1 برای اعتبارسنجی لیست به صورت #NAME? در Excel نمایش داده میشود.
برای یک لیست خطی که با کاما جدا شده است، رشته را در نقلقولهای فرار شده بپیچید: Formula1 = "\"Option1,Option2,Option3\"". بدون نقلقولهای داخلی، Excel مقدار را به عنوان فرمول ارجاع به سلول در نظر میگیرد.
OperatorType.Between بهدرستی اعمال نمیشود.
اطمینان حاصل کنید که هر دو Formula1 (حداقل) و Formula2 (حداکثر) بهصورت رشته تنظیم شدهاند. عدم وجود Formula2 برای Between باعث میشود حد بالایی تعریف نشود.
سوالات متداول
آیا میتوانم در برابر یک بازه سلولی (مثلاً یک بازه نامگذاریشده) اعتبارسنجی کنم؟
Formula1 را به یک مرجع محدوده سلول مانند "Sheet2!$A$1:$A$10" تنظیم کنید. مقادیر در آن محدوده به عنوان منبع فهرست کشویی استفاده خواهند شد.
آیا اعتبارسنجی مانع کتابخانه از نوشتن مقادیر نامعتبر میشود؟
نه. قوانین اعتبارسنجی توسط Excel هنگام وارد کردن داده توسط کاربر اعمال میشوند. کتابخانه Aspose.Cells FOSS اعتبارسنجی را هنگام فراخوانی Cell.PutValue() بهصورت برنامهنویسی اعمال نمیکند.
چگونه یک قانون اعتبارسنجی را حذف کنم؟
قانون را از طریق Worksheet.Validations[index] دسترسی پیدا کنید و از عملیات ValidationCollection برای مدیریت قوانین استفاده کنید. بهجای آن، یک مدل کتابکار جدید بدون قوانین ناخواسته ایجاد کنید.
حداکثر تعداد اعتبارسنجیها در هر شیت چقدر است؟
قالب XLSX حداکثر 65,530 قانون اعتبارسنجی را در هر برگه کاری پشتیبانی میکند.