Введение

Управление электронными таблицами является ядром крейта aspose-cells-foss-rust: объектов, моделирующих рабочую книгу, её листы и их ячейки, а также операций, преобразующих данные Rust в презентабельные файлы XLSX. Эта статья проходит по этой поверхности — от создания листов и записи типизированных значений до стилизации, разметки страниц и структурных функций, делающих рабочие книги удобными: комментарии, гиперссылки, таблицы и определённые имена.

Всё, что показано здесь, является частью открытого, лицензированного по MIT crate. Установка Microsoft Office ни при каком этапе не требуется; библиотека читает и записывает формат пакета XLSX напрямую.

Этот раздел был проверен в соответствии с текущей моделью исходного кода для последнего поведения продукта и охвата API.


Ключевые возможности

Листы и коллекции ячеек

Листы управляются через коллекции листов рабочей книги. Листы обращаются по индексу или имени, переименовываются с помощью set_name, а их ячейки доступны через get_cells (чтение) или get_cells_mut (запись):

let mut workbook = Workbook::new();
{
    let mut worksheets = workbook.get_worksheets_mut();
    let sheet = worksheets.get(0)?;
    sheet.set_name("Charts")?;
    {
        let mut cells = sheet.get_cells_mut();
        cells.get("A1")?.put_value_string("Month")?;
        cells.get("B1")?.put_value_string("Sales")?;
    }
}

Типизированные значения по имени или индексу

Ячейки принимают строки, целые числа, булевы значения, десятичные числа и даты/время через типизированные сеттеры. Ячейки можно адресовать в стиле A1 (get("B3")) или численно (get_by_index(row, column)), что удобно для сгенерированных макетов:

for month in 1..=12_u32 {
    cells
        .get_by_index(month, 0)
        .put_value_string(format!("Month {month}"))?;
    cells
        .get_by_index(month, 1)
        .put_value_i32((month as i32 * 1000) + (month as i32 * 50))?;
}

Формулы с кэшированными значениями

put_formula_with_cached_value сохраняет текст формулы вместе со значением, которое Excel должен отобразить до первой перерасчёта — важно, когда файл используется другими инструментами, читающими кэшированные результаты:

cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
    .put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;

Оформление и макет страницы

CellStyle содержит Font, Fill и Borders; StyleFlag выбирает, какие аспекты стиля применяется при обновлении. NumberFormat управляет отображением значений, а PageSetup управляет PaperSizeType и PageOrientationType для печати. FreezePane и VisibilityType для строк/столбцов обеспечивают навигацию по большим листам.

Комментарии, гиперссылки и имена

Рабочие процессы рецензирования и навигация реализованы через Comment и CommentCollection, Hyperlink вместе с HyperlinkCollection, а также DefinedName и DefinedNameCollection для именованных диапазонов.

Структурированные таблицы и фильтры

ListObject преобразует диапазон в структурированную таблицу со стилем TableStyleType и строками TotalsCalculation; AutoFilter добавляет фильтрацию с условиями FilterColumn и FilterOperatorType.


Быстрый старт

Добавьте crate в ваш Cargo.toml как git-зависимость (crate ещё не опубликован на crates.io):

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

Минимальная сессия управления электронными таблицами — создать, записать, сохранить, перезагрузить:

use aspose_cells_foss_rust::{CellValue, Workbook};
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let mut workbook = Workbook::new();
    {
        let mut worksheets = workbook.get_worksheets_mut();
        let sheet = worksheets.get(0)?;
        let mut cells = sheet.get_cells_mut();

        cells.get("A1")?.put_value_string("Item")?;
        cells.get("B1")?.put_value_string("Quantity")?;
        cells.get("A2")?.put_value_string("Apples")?;
        cells.get("B2")?.put_value_i32(12)?;
    }
    workbook.save("inventory.xlsx")?;

    let loaded = Workbook::load_xlsx("inventory.xlsx")?;
    let sheet = loaded.worksheet("Sheet1")?;
    let cells = sheet.get_cells();
    println!("A2 = {}", cells.get("A2")?.display_string_value());

    Ok(())
}

Поддерживаемые форматы

ФорматРасширениеЧитатьЗаписать
XLSX.xlsx

Загрузка принимает флаги восстановления LoadOptions (try_repair_package, try_repair_xml) со структурированными LoadDiagnostics; сохранение выполняется через save, save_xlsx или save_with_format с перечислением SaveFormat.


Открытый исходный код и лицензирование

Aspose.Cells FOSS для Rust лицензируется по MIT. Исходный код находится на GitHub; коммерческое использование, модификация и перераспространение разрешены.


Начало работы

Связанные ресурсы