简介
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 上获取,许可证允许商业使用、修改和再分发。