介绍

电子表格管理是 aspose-cells-foss-rust crate 的核心:对工作簿、其工作表及单元格进行建模的对象,以及将 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")?;
    }
}

按名称或索引的类型化值

单元格通过类型化的 setter 接受字符串、整数、布尔值、小数和日期时间。单元格可以使用 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 包含 FontFillBordersStyleFlag 用于选择更新所影响的样式方面。NumberFormat 控制数值的呈现,PageSetup 管理打印时的 PaperSizeTypePageOrientationTypeFreezePane 以及行/列的 VisibilityType 使大工作表仍然易于导航。

批注、超链接和名称

审阅者的工作流和导航由 CommentCommentCollectionHyperlinkHyperlinkCollection,以及用于命名范围的 DefinedNameDefinedNameCollection 负责。

结构化表格和过滤器

ListObject 将一个范围转换为结构化表格,可使用 TableStyleType 进行样式设置并包含 TotalsCalculation 行;AutoFilter 通过 FilterColumnFilterOperatorType 条件添加过滤功能。


快速入门

Cargo.toml 中将该 crate 添加为 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_packagetry_repair_xml),并提供结构化的 LoadDiagnostics;保存则通过 savesave_xlsxsave_with_format,使用 SaveFormat 枚举。


开源与许可

Aspose.Cells FOSS for Rust 是 MIT 许可证。源代码托管在 GitHub;允许商业使用、修改和再分发。


快速入门

相关资源