Как создать модель Cells FOSS в Rust

Как создать модель Cells FOSS в Rust

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 внутри того же блока, что и мутировки, и сохраните workbook после завершения блока.

Список вариантов ошибочно воспринимается как формула. Оберните варианты в экранированные кавычки точно как показано: 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.

См. также:

 Русский