Введение

Aspose.Cells FOSS для Rust приносит семью Aspose.Cells FOSS в экосистему Rust. Пакет aspose-cells-foss-rust позволяет Rust-приложениям создавать рабочие книги Excel XLSX с нуля, загружать существующие файлы, изменять их содержимое и сохранять результат — без установки Microsoft Office, COM-автоматизации или внешних рантаймов.

Пакет имеет MIT-лицензию и ориентирован на редакцию Rust 2021. Он следует привычным конвенциям Rust-разработчиков: конструкторы вроде Workbook::new, обработка ошибок на основе Result через CellsError и явные мутирующие аксессоры, такие как get_worksheets_mut и get_cells_mut, которые сохраняют ясность правил заимствования. Если вы создаёте серверные службы, инструменты CLI или конвейеры данных, которым нужно генерировать или потреблять таблицы, эта библиотека предоставляет нативный способ сделать это.

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

Aspose.Cells FOSS уже доступен для .NET, C++, Java, Python и TypeScript; crate для Rust присоединяется к семейству с тем же фокусом: честная, проверяемая поддержка XLSX под разрешительной лицензией.


Что включено

Книги, листы и типизированные значения ячеек

Workbook начинается с одного листа и расширяется с помощью add_worksheet. Ячейки принимают типизированные значения — строки, целые числа, логические, десятичные и даты-время — через специализированные сеттеры, поэтому преобразования в строки не требуются:

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("Hello")?;
    cells.get("B1")?.put_value_i32(123)?;
    cells.get("C1")?.put_value_bool(true)?;
    cells.get("D1")?.put_value_decimal(12.5)?;
}
workbook.save("hello.xlsx")?;

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

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

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

Диаграммы, привязанные к диапазонам данных

Типы диаграмм, такие как столбчатая, линейная и другие, из перечисления ChartType можно привязывать к диапазонам ячеек на листе, а геометрию диаграммы можно считать из загруженных файлов:

let mut charts = sheet.get_charts();
charts.add(
    ChartType::Column,
    "Charts!$B$1:$B$13".to_string(),
    0,
    4,
    18,
    8,
)?;

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

Форматирование ячеек реализуется через CellStyle с Font, Fill и Borders, применяемыми избирательно с помощью StyleFlag. PageSetup управляет размером бумаги и ориентацией при печати, FreezePane фиксирует строки-заголовки, а структурированные таблицы предоставляются через ListObject с TableStyleType.

Проверка данных, условное форматирование и фильтры

Функции обеспечения качества данных входят в базовый набор: правила Validation с OperatorType, условное форматирование через FormatCondition, автофильтры через AutoFilter, определённые имена через DefinedName, а защита книги или листа реализуется через WorkbookProtection и WorksheetProtection.

Защитная загрузка с диагностикой

Реальные XLSX-файлы не всегда корректны. LoadOptions предоставляет флаги восстановления, а LoadDiagnostics сообщает, что обнаружил загрузчик:

let options = LoadOptions {
    try_repair_package: true,
    try_repair_xml: true,
    ..LoadOptions::default()
};

let loaded = Workbook::load_xlsx_with_options(&valid_path, &options)?;
println!(
    "Loaded workbook with {} worksheet(s) and {} diagnostic issue(s).",
    loaded.get_worksheets().count(),
    loaded.get_load_diagnostics().issues().len()
);

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

Добавьте 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>> {
    // Create a new workbook (starts with one sheet, "Sheet1").
    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("Hello")?;
        cells.get("B1")?.put_value_i32(123)?;
        cells.get("G1")?
            .put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
    }
    workbook.save("hello.xlsx")?;

    // Load it back.
    let loaded = Workbook::load_xlsx("hello.xlsx")?;
    let sheet = loaded.worksheet("Sheet1")?;
    let cells = sheet.get_cells();
    println!("A1 = {}", cells.get("A1")?.display_string_value());

    Ok(())
}

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

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

XLSX является основной темой текущего релиза: полное чтение и запись в обоих направлениях через Workbook::load_xlsx и Workbook::save, при этом перечисления LoadFormat и SaveFormat управляют явным выбором формата.


Open Source и лицензирование

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


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

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