1. 产品
  2.   Aspose.Cells
  3.   Aspose.Cells FOSS for Rust

Rust 的 Aspose.Cells FOSS

开源 Rust crate,用于创建、读取、编辑和保存 Excel XLSX 电子表格,且不依赖 Office。

Aspose.Cells FOSS — 开源 Rust 库

Aspose.Cells FOSS for Rust 是一个用于在 Rust 应用程序中处理 Excel XLSX 电子表格的开源库。它为系统程序员提供了一种本地、内存安全的方式,可从头创建工作簿、加载现有 XLSX 文件、修改其内容并保存结果——无需 Microsoft Office、COM 自动化或任何外部运行时。

该 crate 对完整的电子表格对象树建模:Workbook、Worksheet 以及带有类型化值设置器的单元格集合(put_value_string、put_value_i32、put_value_bool、put_value_decimal),通过 put_formula_with_cached_value 实现带缓存值的公式,图表(Chart、ChartType),条件格式(FormatCondition),数据验证(Validation),自动筛选(AutoFilter),单元格样式(CellStyle、Font、Fill、Borders),页面设置(PageSetup),图片、形状、批注、超链接、表格(ListObject),微型图表(SparklineGroup),自定义名称,以及工作簿/工作表保护。

Aspose.Cells FOSS for Rust 使用 MIT 许可证,目标为 Rust 2021 版。它可通过 GitHub 仓库作为标准 Cargo 依赖进行安装——请参阅安装指南获取准确的 Cargo.toml 条目。错误通过常规的 Result 类型(CellsError)呈现,XLSX 加载提供带结构化诊断信息(LoadDiagnostics)的修复选项(LoadOptions)。企业产品系列请参阅 Aspose.Cells — Enterprise Product Family。

工作簿和工作表管理

  • 使用 Workbook::new 创建空工作簿,或使用 Workbook::load_xlsx 加载现有文件
  • 通过 add_worksheet、worksheet 以及可变工作表集合来添加和访问工作表
  • 使用 save、save_xlsx 或明确格式的 save_with_format 将文件保存到磁盘
  • 控制工作簿视图、设置和文档属性

适用范围

  • 后端服务在未安装 Office 的情况下生成 XLSX 报告
  • 批量生成或后处理电子表格的 CLI 工具
  • 为业务用户导出表格结果的 Rust 数据管道

单元格数据、公式和类型

  • 类型化的 setter:put_value_string, put_value_i32, put_value_bool, put_value_decimal, put_value_date_time
  • 通过 put_formula_with_cached_value 写入带缓存结果的公式
  • 使用 display_string_value 和 value_type 读取返回的值
  • 使用 A1 名称或行/列索引(get、get_by_index)定位单元格

实际用途

  • 必须使用正确缓存值打开公式的财务导出
  • 带有类型化列的数据录入模板
  • 对用户提供的工作簿进行往返编辑

样式与布局

  • 通过 CellStyle 使用 Font、Fill 和 Borders 进行单元格样式设置
  • 使用 StyleFlag 应用针对性的样式更新
  • 通过 NumberFormat 进行数字格式化
  • 通过 PageSetup(纸张大小、方向、边距)进行打印和页面布局
  • 使用 FreezePane 冻结窗格;控制行/列的可见性

为什么它重要

  • 来自 Rust 服务的品牌化、可直接打印的报告
  • 具有正确数字和日期格式的易读导出
  • 大尺寸工作表,冻结标题行后仍可导航

图表、图片和形状

  • 通过 ChartType 在工作表的图表集合中添加柱形图、折线图等其他图表类型
  • 从已加载的文件中读取图表锚点和类型 (Chart, ChartCollection)
  • 使用 Picture 嵌入图像,使用 Shape 绘制形状
  • 使用 SparklineGroup 紧凑显示单元格内趋势

使用案例

  • 按计划生成的仪表板和 KPI 工作簿
  • 嵌入在原始数据旁的可视化摘要
  • 基于数据范围的自动图表放置

数据分析与保护

  • 通过 FormatCondition 实现的条件格式规则
  • 通过 Validation(配合 OperatorType)实现的数据验证规则
  • 通过 AutoFilter 实现的自动筛选;通过 ListObject 实现的结构化表格
  • 通过 DefinedName 定义的名称;通过 WorkbookProtection 和 WorksheetProtection 实现的保护
  • 使用 LoadOptions 修复标志和 LoadDiagnostics 实现的稳健 XLSX 加载

谁受益

  • 团队交付已验证的数据录入工作簿
  • 服务摄取可能需要修复的第三方 XLSX 文件
  • 分析师接收预过滤、受保护的报告

创建、保存并重新加载工作簿

创建工作簿,写入已键入的值和带有缓存结果的公式,保存为 XLSX 并重新加载它:

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("C1")?.put_value_bool(true)?;
        cells.get("D1")?.put_value_decimal(12.5)?;
        cells.get("F1")?.put_value_i32(10)?;
        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 文件并使用修复选项

使用 LoadOptions 修复标志以防御性地打开工作簿,并检查结构化的加载诊断信息:

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

let loaded = Workbook::load_xlsx_with_options(&valid_path, &options)?;
let sheet = loaded.worksheet("Sheet1")?;
let cells = sheet.get_cells();

println!("Saved: {}", valid_path.display());
println!(
    "Loaded workbook with {} worksheet(s) and {} diagnostic issue(s).",
    loaded.get_worksheets().count(),
    loaded.get_load_diagnostics().issues().len()
);

从数据范围添加图表

填充数据范围,然后将柱状图和折线图锚定到该范围:

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

常见问题

Aspose.Cells FOSS for Rust 使用什么许可证?

该 crate 在 MIT License 下发布;完整文本作为 LICENSE.txt 随仓库一起提供。

我可以在商业产品中使用它吗?

是的。MIT 许可证允许商业使用、修改和再分发,前提是保留版权和许可证声明。

我该如何安装 crate?

在你的 Cargo.toml 中添加 aspose-cells-foss-rust,作为来自 GitHub 仓库的 git 依赖。

哪些格式可以读取和写入?

XLSX,支持通过 Workbook::load_xlsx 和 save 完整的往返读取和写入。当前版本不支持其他电子表格格式。

它需要 Microsoft Office 吗?

不。该库直接读取和写入 XLSX 包格式——不需要 Office 安装、COM 自动化或外部运行时。

  

支持和学习资源

 中文