การทํางานกับการตรวจสอบข้อมูล
การทํางานกับการตรวจสอบข้อมูล
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation และ ValidationCollection ช่วงเรียน WorkbookValidator class ให้การตรวจสอบความเป็นไปตามก่อนบันทึกไว้.
เพิ่มกฎการยืนยันความถูกต้อง
เข้าไปยังการตรวจสอบความถูกต้องของตารางงาน และเพิ่มกฎใหม่โดยใช้ ValidationCollection::Add(). กําหนดประเภท สูตร และพื้นที่เป้าหมายบนการกลับ Validation วัตถุประกอบ:
#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;
}ประเภทการยืนยันความถูกต้อง
การ ValidationType การนับจํานวนกําหนดประเภทของข้อจํากัดที่สามารถนําไปใช้ได้:
| ValidationType | Description |
|---|---|
WholeNumber | ข้อจํากัดค่าเต็ม |
Decimal | การกักขวางจุดลอย |
List | รายการหลุดจากสูตรหรือระยะ |
Date | ความจํากัดค่าวันที่ |
TextLength | การจํากัดความยาวของเส้น |
Custom | กฎตามธรรมเนียม |
สไตล์เตือน
การ ValidationAlertType การนับจํานวนควบคุมพฤติกรรมที่แสดงเมื่อการตรวจสอบความถูกต้องล้มเหลว:
| AlertStyle | Behavior |
|---|---|
Stop | ป้องกันการเข้าและแสดงช่องโต้ตอบความผิดพลาด |
Warning | แสดงเตือน; ผู้ใช้สามารถยอมรับหรือปฏิเสธ |
Information | แสดงแนวทางเครื่องมือข้อมูล |
วางสไตล์เตือนด้วย Validation::SetAlertStyle(ValidationAlertType).
การสอบถามการยืนยันในเซลล์
การใช้งาน ValidationCollection::GetValidationInCell(row, col) เพื่อหากฎการตรวจสอบที่ใช้กับเซลล์เฉพาะเจาะจง. กลับ nullptr ถ้าไม่มีกฎที่ใช้.
การลบกฎการยืนยันความถูกต้อง
การลบการยืนยันจากเซลล์หรือพื้นที่ระยะจํากัด:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
การตรวจสอบสมุดการทํางานก่อนบันทึก
Call WorkbookValidator::ValidateForSave เพื่อทําการตรวจสอบความสอดคล้องของแบบเล่มงานก่อนบันทึก. นี้ถูกเรียกโดยอัตโนมัติ โดย Workbook::Save แต่สามารถเรียกได้อย่างอิสระในระหว่างการพัฒนา:
WorkbookValidator validator;
validator.ValidateForSave(workbook);เคล็ดลับและปฏิบัติที่ดีที่สุด
- เสมอตั้งทั้งคู่
SetFormula1และSetFormula2สําหรับการตรวจสอบระดับความจํากัด (WholeNumber,Decimal,Date) เพื่อกําหนดขอบล่างและขั้นบน. - การใช้งาน
SetIgnoreBlank(true)ให้เซลล์ว่างผ่านการตรวจสอบโดยไม่ทําให้เกิดความผิดพลาด. - Call
ValidationCollection::AreasOverlapก่อนการเพิ่มกฎใหม่ เพื่อตรวจสอบว่ามีพื้นที่รับรองความถูกต้องซ้อนกันบนใบเดียวกันหรือไม่. WorkbookValidator::ValidateForSaveเรียกภายในในการเก็บ; ร้องเรียกมันระหว่างการพัฒนาเพื่อจับปัญหาได้เร็ว.
ปัญหาทั่วไป
| Issue | Cause | แก้ไข |
|---|---|---|
| การยืนยันที่ไม่ได้ใช้กับเซลล์ | พื้นที่ไม่เพิ่ม | Call Validation::AddArea(area) กับระยะเป้าหมาย |
| รายการไม่แสดง | SetInCellDropDown(false) | เซ็ต SetInCellDropDown(true) สําหรับการตรวจสอบรายชื่อ |
| กฎหมายที่ซ้อนกัน | กฎสองกรอบครอบคลุมช่องเดียวกัน | การใช้งาน AreasOverlap การตรวจสอบและแก้ไขความขัดแย้ง |
| ValidateForSave ไม่สําเร็จ | ความไม่สอดคล้องของแบบจําลอง | ลงประกาศการตรวจสอบและแก้ไขความไม่เป็นไปตามที่แจ้งก่อนบันทึก |
คําอธิบายการพบบ่อย API
| ประเภท/วิธีการ | Description |
|---|---|
ValidationCollection::Add() | เพิ่มกฎการยืนยันที่ว่างใหม่ |
ValidationCollection::GetValidationInCell(row, col) | ค้นหาการยืนยันค่าของเซลล์ |
ValidationCollection::RemoveArea(area) | ลบการยืนยันจากระยะ |
ValidationCollection::RemoveACell(row, col) | ลบการยืนยันจากเซลล์ |
ValidationCollection::AreasOverlap | การตรวจสอบพื้นที่การยืนยันความถูกต้อง ที่ซ้อนกัน |
Validation::SetType(ValidationType) | กําหนดประเภทการยืนยันความถูกต้อง |
Validation::SetFormula1(expr) | กําหนดขอบล่างหรือแหล่งรายการ |
Validation::SetFormula2(expr) | กําหนดขั้นบน |
Validation::AddArea(area) | ใช้กฎในระยะ |
Validation::RemoveArea(area) | ลบกฎจากระยะ |
Validation::SetAlertStyle(style) | การตั้งการหยุด/เตือน/ประชาสัมพันธ์ |
WorkbookValidator::ValidateForSave | การตรวจสอบความเป็นไปตามก่อนการบันทึก |