Làm việc với Data Validation
Làm việc với Data Validation
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation và ValidationCollection lớp học - The WorkbookValidator lớp cung cấp một kiểm tra sự nhất quán trước khi tiết kiệm.
Thêm một quy tắc xác nhận
Truy cập bộ sưu tập xác thực cho một bảng tính và thêm một quy tắc mới bằng cách sử dụng ValidationCollection::Add().Thiết lập loại, công thức và khu vực mục tiêu trên phần trả về Validation đối tượng :
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/ValidationCollection.h"
#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInCellDropDown(false);
v.SetInputTitle("Enter Value");
v.SetInputMessage("Value must be between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value is out of range.");
v.SetShowInput(true);
v.SetShowError(true);
CellArea area = CellArea::CreateCellArea("B2", "B10");
v.AddArea(area);
workbook.Save("validated.xlsx");
return 0;
}Loại Validation
Các ValidationType Danh sách xác định các loại hạn chế có thể được áp dụng:
| ValidationType | Description |
|---|---|
WholeNumber | Giá trị toàn bộ giới hạn |
Decimal | Floating Point hạn chế |
List | Danh sách drop-down từ một công thức hoặc phạm vi |
Date | Giá trị ngày hạn chế |
TextLength | Dung lượng hạn chế |
Custom | Quy tắc cá nhân dựa trên công thức |
Lời cảnh báo Style
Các ValidationAlertType Danh sách kiểm soát hành vi được hiển thị khi xác thực thất bại:
| AlertStyle | Behavior |
|---|---|
Stop | Khóa vào và hiển thị một giao tiếp lỗi |
Warning | Hiển thị cảnh báo; người dùng có thể chấp nhận hoặc từ chối |
Information | Hiển thị một công cụ thông tin |
Thiết lập kiểu cảnh báo với Validation::SetAlertStyle(ValidationAlertType).
Tìm kiếm xác thực trong một tế bào
Sử dụng ValidationCollection::GetValidationInCell(row, col) để tìm ra quy tắc xác thực nào áp dụng cho một ô cụ thể. nullptr Nếu không có quy tắc nào được áp dụng.
Xóa quy tắc xác thực
Xóa một xác thực từ một ô hoặc phạm vi cụ thể:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Sửa sổ Workbook Validation
Call WorkbookValidator::ValidateForSave để chạy một kiểm tra sự nhất quán trên mô hình sổ làm việc trước khi tiết kiệm. điều này được gọi là tự động bởi Workbook::Save Nhưng có thể được đề cập độc lập trong quá trình phát triển:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Mẹo và Thực hành Tốt nhất
- Luôn đặt cả hai
SetFormula1vàSetFormula2Đối với các loại xác nhận (WholeNumber,Decimal,Date1) Tính định các giới hạn thấp hơn và cao hơn. - Sử dụng
SetIgnoreBlank(true)để cho phép các tế bào trống vượt qua xác thực mà không gây ra lỗi. - Call
ValidationCollection::AreasOverlaptrước khi thêm một quy tắc mới để kiểm tra các khu vực xác thực trên cùng một tấm. WorkbookValidator::ValidateForSaveđược gọi trong nội bộ để cứu; kêu gọi nó trong quá trình phát triển để bắt các vấn đề sớm.
Các vấn đề thường gặp
| Issue | Cause | Fix Đặt |
|---|---|---|
| - Chứng nhận không áp dụng cho ô | Khu vực không được thêm vào | Call Validation::AddArea(area) Với mục tiêu khung |
| Drop-down không hiển thị | SetInCellDropDown(false) | Set Đặt SetInCellDropDown(true) Danh sách Validations |
| Quy tắc Overlap | 2 quy tắc bao gồm các tế bào tương tự | Sử dụng AreasOverlap Khám phá và giải quyết xung đột |
| Lời bài hát: Failure | Model bất đồng | Xem xét và sửa chữa sự không liên tục được báo cáo trước khi tiết kiệm |
Tóm tắt Tham chiếu API
| lớp học / phương pháp | Description |
|---|---|
ValidationCollection::Add() | Thêm một quy tắc xác thực trống mới |
ValidationCollection::GetValidationInCell(row, col) | Tìm xác nhận cho một ô |
ValidationCollection::RemoveArea(area) | Xóa xác thực từ một phạm vi |
ValidationCollection::RemoveACell(row, col) | Xóa xác thực từ một ô |
ValidationCollection::AreasOverlap | Kiểm tra các khu vực xác thực quá tải |
Validation::SetType(ValidationType) | Thiết lập loại xác nhận |
Validation::SetFormula1(expr) | Thiết lập giới hạn thấp hơn hoặc nguồn danh sách |
Validation::SetFormula2(expr) | Lắp đặt upper bound |
Validation::AddArea(area) | - Sử dụng quy tắc cho một phạm vi |
Validation::RemoveArea(area) | Xóa quy tắc từ một phạm vi |
Validation::SetAlertStyle(style) | Thiết lập Stop / Warning / Information Behavior |
WorkbookValidator::ValidateForSave | Kiểm tra sự nhất quán Pre-Save |