Cách làm việc với Xác thực dữ liệu trong .NET
Aspose.Cells FOSS for .NET cho phép bạn thêm các quy tắc xác thực dữ liệu vào các phạm vi ô thông qua Worksheet.Validations (một ValidationCollection). Gọi Add(CellArea) để tạo một đối tượng Validation và đặt Type của nó bằng cách sử dụng ValidationType. Các loại được hỗ trợ bao gồm List, Decimal và Custom. Cài đặt bằng dotnet add package Aspose.Cells_FOSS.
Hướng Dẫn Từng Bước
Bước 1: Cài đặt gói
dotnet add package Aspose.Cells_FOSSBước 2: Nhập không gian tên
using Aspose.Cells_FOSS;Bước 3: Thêm xác thực danh sách thả xuống
Tạo một CellArea với CellArea.CreateCellArea(), thêm nó vào Worksheet.Validations, và đặt ValidationType.List bằng danh sách phân tách bằng dấu phẩy trong 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.");Bước 4: Thêm xác thực phạm vi số
Sử dụng ValidationType.Decimal kết hợp với OperatorType.Between và Formula1/Formula2 để hạn chế đầu vào số.
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.");Bước 5: Kết hợp nhiều xác thực trên cùng một trang tính
Bạn có thể thêm bất kỳ số lượng xác thực nào vào cùng một trang tính bằng cách gọi Validations.Add() nhiều lần, mỗi lần với một CellArea khác nhau.
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.");Các vấn đề thường gặp và cách khắc phục
Dropdown không xuất hiện trong Excel sau khi lưu.
Đảm bảo InCellDropDown = true được đặt trên đối tượng Validation trước khi lưu. Dropdown chỉ hiển thị trong Excel khi cờ này là true và ValidationType.List được sử dụng.
Xác thực cho phép các giá trị nằm ngoài phạm vi đã định.
Xác thực được thực thi bởi Excel, không phải bởi thư viện. Đặt các quy tắc xác thực không ngăn cản thư viện tự viết bất kỳ giá trị nào vào ô. Xác thực được áp dụng khi người dùng nhập dữ liệu trong Excel.
Formula1 cho việc xác thực danh sách hiển thị là #NAME? trong Excel.
Đối với danh sách nội tuyến phân tách bằng dấu phẩy, bao quanh chuỗi bằng dấu ngoặc kép đã được escape: Formula1 = "\"Option1,Option2,Option3\"". Nếu không có dấu ngoặc kép bên trong, Excel sẽ coi giá trị là công thức tham chiếu ô.
OperatorType.Between không áp dụng đúng.
Đảm bảo cả Formula1 (tối thiểu) và Formula2 (tối đa) được đặt dưới dạng chuỗi. Thiếu Formula2 cho Between làm cho giới hạn trên không xác định.
Câu hỏi thường gặp
Tôi có thể xác thực dựa trên một phạm vi ô (ví dụ: một phạm vi được đặt tên) không?
Đặt Formula1 thành tham chiếu phạm vi ô như "Sheet2!$A$1:$A$10". Các giá trị trong phạm vi đó sẽ được sử dụng làm nguồn danh sách thả xuống.
Xác thực có ngăn thư viện ghi các giá trị không hợp lệ không?
Không. Các quy tắc xác thực được Excel thực thi khi người dùng nhập dữ liệu. Thư viện Aspose.Cells FOSS không thực thi xác thực khi bạn gọi Cell.PutValue() bằng chương trình.
Làm thế nào để xóa một quy tắc xác thực?
Truy cập quy tắc qua Worksheet.Validations[index] và sử dụng các thao tác ValidationCollection để quản lý các quy tắc. Ngoài ra, tạo một mô hình workbook mới mà không có các quy tắc không mong muốn.
Số lượng xác thực tối đa cho mỗi sheet là bao nhiêu?
Định dạng XLSX hỗ trợ tối đa 65.530 quy tắc xác thực cho mỗi bảng tính.