چگونه یک مدل Cells FOSS در Rust ایجاد کنیم

چگونه یک مدل Cells FOSS در Rust ایجاد کنیم

Aspose.Cells FOSS برای Rust یک کتاب کار را به صورت درختی از اشیای تایپ‌شده مدل‌سازی می‌کند — worksheets، مجموعه‌های سلول و اشیای قانون مانند validations. این راهنما یک مدل کتاب کار کامل را از صفر می‌سازد: مقادیر سلول تایپ‌شده، قوانین اعتبارسنجی داده بر روی بازه‌های CellArea، و یک فایل XLSX ذخیره‌شده در انتها.

راهنمای گام به گام

مرحله 1: نصب بسته

crate را به Cargo.toml خود به عنوان یک وابستگی git در Cargo اضافه کنید:

# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }

سپس پروژه را بسازید:

cargo build

مرحله ۲: وارد کردن کلاس‌های مورد نیاز

use aspose_cells_foss_rust::{
    CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook,
};
use std::error::Error;

مرحله ۳: ایجاد Workbook و داده‌های سلول

مدل را با یک Workbook شروع کنید، شیت را نام‌گذاری کنید و مقادیر تایپ‌شده را بنویسید:

let mut workbook = Workbook::new();
{
    let mut worksheets = workbook.get_worksheets_mut();
    let sheet = worksheets.get(0)?;
    sheet.set_name("Validation Sheet")?;
    let mut cells = sheet.get_cells_mut();
    cells.get("A1")?.put_value_string("Open")?;
    cells.get("B2")?.put_value_i32(5)?;
    cells.get("G1")?.put_value_string("ABCDE")?;
}

مرحله ۴: افزودن اعتبارسنجی لیست

قواعد اعتبارسنجی به بازه‌های CellArea از طریق مجموعه اعتبارسنجی شیت متصل می‌شوند. یک اعتبارسنجی لیست سلول‌ها را به گزینه‌های ثابت محدود می‌کند و یک منوی کشویی داخل سلول ارائه می‌دهد:

let mut validations = sheet.get_validations();
let list_index = validations.add(CellArea::create_cell_area_a1("A1", "A3")?)?;
let mut list_validation = validations
    .get(list_index)
    .expect("validation should exist");
list_validation.set_type(ValidationType::List);
list_validation.set_formula1("\"Open,Closed\"");
list_validation.set_in_cell_drop_down(true);
list_validation.set_show_input(true);
list_validation.set_input_title("Status");
list_validation.set_input_message("Pick a status");

مرحله ۵: افزودن قوانین بازه‌ای و سفارشی

OperatorType قوانین بازه عددی را هدایت می‌کند، و ValidationType::Custom فرمول را می‌پذیرد؛ ValidationAlertType شدت هشدار را انتخاب می‌کند:

let decimal_index = validations.add(CellArea::create_cell_area_a1("B2", "C3")?)?;
let mut decimal_validation = validations
    .get(decimal_index)
    .expect("validation should exist");
decimal_validation.set_type(ValidationType::Decimal);
decimal_validation.set_operator(OperatorType::Between);
decimal_validation.set_formula1("1.5");
decimal_validation.set_formula2("9.5");
decimal_validation.set_show_error(true);

let custom_index = validations.add(CellArea::create_cell_area_a1("G1", "G1")?)?;
let mut custom_validation = validations
    .get(custom_index)
    .expect("validation should exist");
custom_validation.set_type(ValidationType::Custom);
custom_validation.set_alert_style(ValidationAlertType::Warning);
custom_validation.set_formula1("LEN(G1)<=5");

مرحله ۶: ذخیره مدل

workbook.save("validations-sample.xlsx")?;

فایل ذخیره‌شده در اکسل باز می‌شود با فهرست‌های کشویی، بررسی‌های محدوده و قانون سفارشی فعال.

مشکلات رایج و راه‌حل‌ها

اعتبارسنجی هیچ تأثیر قابل مشاهده‌ای در اکسل ندارد. پیغام‌ها را فعال کنید: set_show_input / set_show_error کنترل می‌کند که آیا راهنمای ورودی و هشدار خطا ظاهر شوند یا نه.

یک قانون باید چندین بازهٔ جداگانه را پوشش دهد. بازه‌های بیشتری را به یک قانون موجود اضافه کنید با add_area و اضافی CellArea::create_cell_area_a1 بازه‌ها.

خطاها را هنگام افزودن اعتبارسنجی‌ها به‌کار ببرید. قابلیت قرض‌گیری کاربرگ را محدود نگه دارید: fetch get_validations داخل همان بلوک همانند تغییرات، و پس از پایان بلوک، workbook را ذخیره کنید.

گزینه‌های لیست به‌ اشتباه به‌ عنوان فرمول خوانده می‌شوند. گزینه‌ها را دقیقاً همان‌طور که نشان داده شده است، در نقل‌قول‌های escape شده بپیچید: set_formula1("\"Open,Closed\"").

سوالات متداول

کدام انواع اعتبارسنجی در دسترس هستند؟

ValidationType شامل List، Decimal و Custom است همان‌طور که در اینجا نشان داده شده — فهرست‌های کشویی، بازه‌های عددی از طریق OperatorType، و قواعد مبتنی بر فرمول.

آیا اعتبارسنجی‌ها می‌توانند پیام‌های سفارشی نشان دهند؟

بله — set_input_title / set_input_message پیام اولیه را کنترل می‌کنند، و set_error_title / set_error_message هشدار خطا را کنترل می‌کنند.

آیا مدل پس از یک round-trip باقی می‌ماند؟

بله. با Workbook::save ذخیره کنید و با Workbook::load_xlsx دوباره بارگذاری کنید؛ قواعد اعتبارسنجی در فایل XLSX حفظ می‌شوند.

همچنین ببینید:

 فارسی