如何在 Rust 中创建 Cells FOSS 模型

如何在 Rust 中创建 Cells FOSS 模型

Aspose.Cells FOSS for Rust 将工作簿建模为一棵由类型化对象组成的树——工作表、单元格集合以及诸如验证之类的规则对象。本指南从头构建完整的工作簿模型:类型化单元格值、针对 CellArea 区域的数据验证规则,以及最终保存的 XLSX 文件。

分步指南

步骤 1:安装包

将 crate 添加到你的 Cargo.toml 中,作为 Cargo git 依赖:

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

然后构建项目:

cargo build

步骤 2:导入必需的类

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

步骤 3:创建工作簿和单元格数据

使用 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")?;
}

步骤 4:添加列表验证

验证规则通过工作表的验证集合附加到 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");

步骤 5:添加范围和自定义规则

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");

步骤 6:保存模型

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

已保存的文件在 Excel 中打开时,带有下拉列表、范围检查以及已激活的自定义规则。

常见问题与解决方案

在 Excel 中,验证没有可见的效果。 启用提示: set_show_input / set_show_error 控制是否显示输入提示和错误警报。

一条规则应覆盖多个独立范围。 向现有规则添加更多范围,使用 add_area 以及额外 CellArea::create_cell_area_a1 范围。

在添加验证时借用错误。 保持工作表借用的作用域:fetch get_validations 在与变更相同的代码块内部,并在块结束后保存工作簿。

列表选项被误读为公式。 将选项用转义引号包裹,完全如示例所示: set_formula1("\"Open,Closed\"").

常见问题

有哪些可用的验证类型?

ValidationType 包含 List、Decimal 和 Custom 如下所示 — 列表下拉框、通过 OperatorType 的数字范围,以及基于公式的规则。

验证可以显示自定义消息吗?

是的 — set_input_title / set_input_message 控制提示,而 set_error_title / set_error_message 控制失败警报。

模型在往返过程中能够保持吗?

是的。使用 Workbook::save 保存并使用 Workbook::load_xlsx 重新加载;验证规则会保存在 XLSX 文件中。

另请参阅

 中文