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