简介

Aspose.Cells FOSS for Rust 将 Aspose.Cells FOSS 系列引入 Rust 生态系统。aspose-cells-foss-rust crate 允许 Rust 应用程序从零创建 Excel XLSX 工作簿,加载已有文件,修改其内容,并保存结果——无需安装 Microsoft Office、COM 自动化或外部运行时。

该 crate 使用 MIT 许可证,目标为 Rust 2021 版。它遵循 Rust 开发者期待的约定:类似 Workbook::new 的构造函数、基于 Result 的错误处理通过 CellsError,以及诸如 get_worksheets_mut 和 get_cells_mut 的显式可变访问器,以保持借用规则清晰。如果你构建后端服务、CLI 工具或需要生成或消费电子表格的数据管道,这个库为你提供了原生的实现方式。

本节已根据当前源模型审查,以确保最新的产品行为和 API 覆盖范围。

Aspose.Cells FOSS 已在 .NET、C++、Java、Python 和 TypeScript 中可用;Rust crate 加入了该系列,关注点相同:在宽松许可证下提供诚实、可验证的 XLSX 支持。


包含内容

工作簿、工作表以及类型化单元格值

一个 Workbook 从一个工作表开始,并通过 add_worksheet 进行扩展。单元格通过专用的 setter 接受已键入的值——字符串、整数、布尔值、小数和日期时间——因此无需进行字符串化的类型转换:

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 枚举来明确选择格式。


开源与许可

Aspose.Cells FOSS for Rust 是 MIT 许可证。完整的源代码可在 GitHub 上获取,许可证允许商业使用、修改和再分发。


快速入门

相关资源