วิธีการเพิ่ม การยืนยันข้อมูลในตารางกระดาษ ใน C++
Aspose.Cells FOSS for C++ supports cell-level data validation rules that constrain what values users can enter in specific cells or ranges. The Validation, ValidationCollection,และ WorkbookValidator คลาสประกอบ API การยืนยัน.
คู่มือขั้นตอนตามขั้นตอนนี้
ขั้น ตอน ที่ 1: จัด การ สร้าง
cmake_minimum_required(VERSION 3.15)
project(DataValidation CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(DataValidation main.cpp)
target_link_libraries(DataValidation PRIVATE Aspose.Cells.Foss.Cpp)ขั้นตอนที่ 2: รวมหัวข้อ ที่ จําเป็น
#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;ขั้นตอน 3: เข้าสู่การตรวจสอบข้อมูล
รับข้อมูลจาก ValidationCollection จากใบทํางาน:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
return 0;
}ขั้นตอนที่ 4: เพิ่มกฎการยืนยันความถูกต้อง
Call ValidationCollection::Add() และตั้งค่าการกลับ Validation วัตถุประกอบ:
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInputTitle("Enter Quantity");
v.SetInputMessage("Enter a whole number between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value must be between 1 and 100.");
v.SetShowInput(true);
v.SetShowError(true);
v.SetAlertStyle(ValidationAlertType::Stop);ขั้นตอนที่ 5: ใช้กฎในระยะ
ติดการยืนยันกับ a CellArea การใช้ Validation::AddArea:
CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);ขั้นตอนที่ 6: บันทึกเวิร์กบุ๊ก
workbook.Save("validated.xlsx");
workbook.Dispose();ขั้นตอน 7: ใช้การตรวจสอบก่อนบันทึก (เลือก)
Call WorkbookValidator::ValidateForSave ในระหว่างการพัฒนา เพื่อจับปัญหาของแบบก่อนที่จะเก็บไว้:
WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");ปัญหาทั่วไปและข้อกําหนด
การยืนยันไม่เห็นในไฟล์ที่บันทึกไว้ Ensure Validation::AddArea(area) จะถูกเรียกหลังจากการตั้งค่ากฎ. กฎที่ไม่มีพื้นที่เกี่ยวข้องไม่ได้เป็นเรียงลําดับ.
รายการหลุดลงไม่แสดง เซ็ต v.SetInCellDropDown(true) และตั้ง v.SetType(ValidationType::List) มี SetFormula1 ที่ชี้วัดไปยังระยะหรือค่าที่แยกด้วยคอมม่า.
พื้นที่การตรวจสอบความถูกต้องซ้อนกัน การใช้งาน ValidationCollection::AreasOverlap เพื่อตรวจสอบความขัดแย้งก่อนการเพิ่มกฎใหม่. กฎที่ซ้อนกันอาจทําให้ Excel มีพฤติกรรมไม่คาดหวัง.
ข้อความการเข้าไม่ปรากฏ การันตีทั้งคู่ SetShowInput(true) และ SetInputMessage("...") are set. สายข้อความเปล่าจะลบการส่งข้อมูลในตัว แม้ว่า SetShowInput(true) เรียกว่า.
ValidateForSave รายงานความผิดพลาด รีวิวความไม่สอดคล้องที่รายงาน เหตุผลทั่วไปคือ ขอบสูตรที่ขาดสําหรับการยืนยันชนิดระยะและจุดประชาระดัดพื้นที่เซลล์ที่ผิดปกติ.
คําถามที่พบบ่อย
มีการรองรับชนิดของการยืนยันความถูกต้องใด ๆ?
การ ValidationType การนับรวมนี้มี: WholeNumber, Decimal, List, Date, TextLength, Custom,และ Any.
ผมสามารถลบกฎการยืนยันจากระยะได้หรือไม่?
ใช่ ใช้ ValidationCollection::RemoveArea(area) การลบกฎจากระยะหรือ RemoveACell(row, col) สําหรับเซลล์เดียว.
ผมสามารถใช้กฎการยืนยันเดียวกันกับระยะหลาย ๆ ระดับได้หรือไม่?
ใช่ โทรหาฉันนะ Validation::AddArea(area) หลายครั้งบนตัวเดียวกัน Validation ไม่ยอมใช้มันในระยะเพิ่มเติม.
มีวิธีการเตือนอะไรบ้าง?
ValidationAlertType ประกอบด้วย: Stop (ปิดการเข้าที่ไม่ถูกต้อง), Warning (เตือน แต่อนุญาตให้เข้า) และ Information (เพียงแค่ทูตเทิลติปข้อมูล).
การยืนยันผลงานในเวลาทํางาน หรือแค่ Excel เท่านั้น?
กฎการตรวจสอบความถูกต้องของข้อมูลจะถูกเก็บในไฟล์ XLSX และใช้ Excel หรือ Reader ที่ตรงกันได้. ห้องสมุดไม่ประเมินข้อจํากัดในการตรวจหาความ ถูกต้อง ในเวลาทํางาน เมื่อวัคติถูกกําหนดโดยโปรแกรม.