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