วิธีทำงานกับการตรวจสอบข้อมูลใน .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 หลังจากบันทึก. 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 กฎต่อเวิร์กชีตหนึ่งแผ่น.

ดูเพิ่มเติม

 ภาษาไทย