วิธีทำงานกับการตรวจสอบข้อมูลใน .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 หลังจากบันทึก. Ensure InCellDropDown = true ถูกตั้งค่าไว้บน Validation อ็อบเจ็กต์ก่อนบันทึก. เมนูดรอปดาวน์จะมองเห็นได้ใน Excel เฉพาะเมื่อแฟล็กนี้เป็น true and ValidationType.List ถูกใช้.
การตรวจสอบความถูกต้องอนุญาตให้ค่าที่อยู่นอกช่วงที่กำหนด. การตรวจสอบความถูกต้องถูกบังคับใช้โดย Excel ไม่ใช่โดยไลบรารี การตั้งกฎการตรวจสอบความถูกต้องไม่ได้ป้องกันไม่ให้ไลบรารีเขียนค่าใด ๆ ลงในเซลล์ การตรวจสอบความถูกต้องจะทำงานเมื่อผู้ใช้ป้อนข้อมูลใน Excel.
Formula1 สำหรับการตรวจสอบรายการจะแสดงเป็น #NAME? ใน Excel. สำหรับรายการคั่นด้วยเครื่องหมายจุลภาคในบรรทัดเดียว ให้ใส่สตริงในเครื่องหมายอัญประกาศที่หลบหนี: Formula1 = "\"Option1,Option2,Option3\"". หากไม่มีเครื่องหมายอัญประกาศภายใน Excel จะตีค่าดังกล่าวเป็นสูตรอ้างอิงเซลล์.
OperatorType.Between ไม่ทำงานอย่างถูกต้อง. ตรวจสอบให้แน่ใจว่าทั้งสอง Formula1 (minimum) และ Formula2 (maximum) ถูกตั้งเป็นสตริง หากขาด Formula2 for Between จะทำให้ขอบบนไม่มีการกำหนดค่า.
คำถามที่พบบ่อย
ฉันสามารถตรวจสอบกับช่วงเซลล์ (เช่น ช่วงที่ตั้งชื่อ) ได้หรือไม่?
ตั้งค่า Formula1 ให้เป็นการอ้างอิงช่วงเซลล์ เช่น "Sheet2!$A$1:$A$10". ค่าในช่วงนั้นจะถูกใช้เป็นแหล่งข้อมูลสำหรับรายการดรอปดาวน์.
การตรวจสอบทำให้ไลบรารีไม่เขียนค่าที่ไม่ถูกต้องหรือไม่?
ไม่. กฎการตรวจสอบถูกบังคับใช้โดย Excel เมื่อผู้ใช้ป้อนข้อมูล. ไลบรารี Aspose.Cells FOSS ไม่บังคับใช้การตรวจสอบเมื่อคุณเรียก Cell.PutValue() อย่างโปรแกรมเมติก.
ฉันจะลบกฎการตรวจสอบได้อย่างไร?
เข้าถึงกฎผ่าน Worksheet.Validations[index] และใช้การดำเนินการ ValidationCollection เพื่อจัดการกฎต่าง ๆ อีกทางเลือกหนึ่งคือสร้างโมเดลสมุดงานใหม่โดยไม่มีกฎที่ไม่ต้องการ.
จำนวนการตรวจสอบสูงสุดต่อชีตคือเท่าไหร่?
รูปแบบ XLSX รองรับกฎการตรวจสอบได้สูงสุดถึง 65,530 กฎต่อเวิร์กชีตหนึ่งแผ่น.