چگونه یک مدل 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 حفظ میشوند.