چگونه اعتبارسنجی دادهها را به یک صفحهٔ گسترده در C++ اضافه کنیم
Aspose.Cells FOSS برای C++ از قوانین اعتبارسنجی سطح سلول پشتیبانی میکند که مقادیری را که کاربران میتوانند در سلولها یا بازههای خاص وارد کنند محدود میسازد. کلاسهای 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;
}مرحله ۴: افزودن یک قانون اعتبارسنجی
فراخوانی 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);مرحله ۵: اعمال قانون بر روی یک بازه
پیوست کردن اعتبارسنجی به یک CellArea با استفاده از Validation::AddArea:
CellArea area = CellArea::CreateCellArea("B2", "B20");
v.AddArea(area);مرحله ۶: ذخیرهسازی کتاب کار
workbook.Save("validated.xlsx");
workbook.Dispose();مرحله ۷: اجرای اعتبارسنجی پیش از ذخیره (اختیاری)
فراخوانی WorkbookValidator::ValidateForSave در طول توسعه برای کشف مشکلات مدل قبل از ذخیره:
WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");مشکلات رایج و راهحلها
اعتبارسنجی در فایل ذخیرهشده قابل مشاهده نیست Ensure Validation::AddArea(area) بعد از پیکربندی قانون فراخوانی میشود. قانونی که هیچ ناحیهای مرتبط با آن ندارد، سریالسازی نمیشود.
فهرست کشویی نمایش داده نمیشود تنظیم v.SetInCellDropDown(true) و تنظیم v.SetType(ValidationType::List) with SetFormula1 به یک بازه یا مقادیر جدا شده با کاما اشاره میکند.
ناحیههای اعتبارسنجی همپوشانی استفاده ValidationCollection::AreasOverlap برای بررسی تضادها قبل از افزودن یک قانون جدید. قوانین همپوشانی ممکن است رفتار غیرمنتظرهای در Excel ایجاد کنند.
پیام ورودی نمایش داده نمیشود اطمینان حاصل کنید که هر دو SetShowInput(true) and SetInputMessage("...") تنظیم شدهاند. یک رشته پیام خالی درخواست ورودی را حتی اگر 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 (فقط ابزار راهنمای اطلاعاتی).
آیا اعتبارسنجی در زمان اجرا کار میکند یا فقط در اکسل؟
قواعد اعتبارسنجی داده در فایل XLSX ذخیره میشوند و توسط Excel یا یک خواننده سازگار اعمال میشوند. کتابخانه هنگام تنظیم مقادیر بهصورت برنامهای، محدودیتهای اعتبارسنجی را در زمان اجرا ارزیابی نمیکند.