calamine Rust 库完整指南:读取 Excel 文件教程与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

calamine Rust 库:高效读取 Excel 文件

1. 什么是 calamine?为什么需要它?

calamine 是一个用 Rust 编写的高性能库,专门用于读取 Excel 文件(支持 .xlsx、.xls、.xlsb、.ods 格式)。它完全用纯 Rust 实现,无需任何外部依赖,因此非常适合对速度、内存安全和跨平台兼容性有严格要求的项目。与许多其他库不同,calamine 不需要安装 Microsoft Office 或 Java 运行时环境。

calamine 的核心功能是从电子表格中提取数据。它支持读取单元格、行、列、工作表,以及处理公式、日期、数字和字符串。该库特别适用于自动化报表处理、将 Excel 数据导入数据库、分析大型表格以及构建数据处理管道(ETL)。

calamine 的设计注重性能:它采用流式读取和惰性加载机制,能够处理数百兆字节大小的文件,而不会显著消耗内存。该库受到 Rust 社区的积极维护,并被用于 rust-xlsxwriter 和 tauri 等知名项目中。

2. 安装指南

要将 calamine 添加到你的 Rust 项目中,请在终端中执行以下命令:

cargo add calamine

或者,手动将依赖项添加到 Cargo.toml 文件中:

[dependencies]
calamine = "0.24"

之后,运行 cargo build 来下载并编译该库。请确保你已安装 Rust(建议使用 1.65 或更高版本)。

3. 快速上手

以下是一个从 Excel 文件读取数据的最小示例:

use calamine::{open_workbook, Reader, Xlsx};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 打开文件
    let mut workbook: Xlsx<_> = open_workbook("data.xlsx")?;
    
    // 获取第一个工作表
    let sheet_name = workbook.sheet_names()[0].clone();
    let range = workbook.worksheet_range(&sheet_name)?;
    
    // 输出内容
    for row in range.rows() {
        for cell in row {
            print!("{:?}\t", cell);
        }
        println!();
    }
    
    Ok(())
}

这段代码会打开 data.xlsx 文件,读取第一个工作表,并将所有单元格输出到控制台。请注意使用了 open_workbook——这是一个通用函数,用于打开任何支持格式的文件。

4. 核心方法与函数

4.1. open_workbook

函数签名: pub fn open_workbook<P: AsRef<Path>, T: Reader<BufReader<File>>>(path: P) -> Result<T, CalamineError>

功能: 根据指定路径打开 Excel 文件,并返回指定类型的工作簿。返回值的类型取决于文件格式:Xlsx、Xls、Xlsb 或 Ods。

use calamine::{open_workbook, Xlsx};

fn main() {
    let mut workbook: Xlsx<_> = open_workbook("report.xlsx").expect("无法打开文件");
    println!("文件已成功打开");
}

4.2. sheet_names

函数签名: fn sheet_names(&a

推荐