วิธีทำงานกับการตรวจสอบความถูกต้องของข้อมูลใน .NET

วิธีทำงานกับการตรวจสอบความถูกต้องของข้อมูลใน .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

ขั้นตอนที่ 2: นำเข้า Namespace

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() อย่างโปรแกรมเมติก.

ฉันจะลบ validation rule ได้อย่างไร?

เข้าถึงกฎผ่าน Worksheet.Validations[index] และใช้การดำเนินการ ValidationCollection เพื่อจัดการกฎต่างๆ อีกทางหนึ่ง ให้สร้างโมเดลเวิร์กบุ๊กใหม่โดยไม่มีกฎที่ไม่ต้องการ.

จำนวนการตรวจสอบสูงสุดต่อชีตคือเท่าไหร่?

รูปแบบ XLSX รองรับกฎการตรวจสอบได้สูงสุด 65,530 รายการต่อแผ่นงาน.

ดูเพิ่มเติม

 ภาษาไทย