كيفية العمل مع التحقق من صحة البيانات في .NET

كيفية العمل مع التحقق من صحة البيانات في .NET

يتيح لك Aspose.Cells FOSS لـ .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

الخطوة 2: استيراد مساحة الاسم

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 قبل الحفظ. تكون القائمة المنسدلة مرئية في Excel فقط عندما تكون هذه العلامة true ويتم استخدام ValidationType.List.

التحقق يسمح بالقيم خارج النطاق المحدد.
التحقق يتم تطبيقه بواسطة Excel، وليس بواسطة المكتبة. ضبط قواعد التحقق لا يمنع المكتبة نفسها من كتابة أي قيمة في الخلية. يتم تطبيق التحقق عندما يدخل المستخدم بيانات في Excel.

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 قاعدة تحقق لكل ورقة عمل.

انظر أيضًا

 العربية