用Rust读取Excel文件的方法有哪些
最近在学习Rust,想用Rust读取Excel文件,但不知道有哪些可用的库或方法。请问目前主流的方法有哪些?各有什么优缺点?是否需要依赖外部工具?性能表现如何?有没有简单的代码示例可以参考?
2 回复
用Rust读取Excel文件主要有以下几种方法:
- calamine - 最常用的库,支持.xlsx和.xls格式
- rust_xlsxwriter - 主要用于写入,也支持读取
- polars - 数据分析库,支持Excel读取
推荐使用calamine,安装简单:
[dependencies]
calamine = "0.22"
示例代码可读取工作表数据到Vec中,简单实用。
在Rust中读取Excel文件,主要有以下几种方法:
1. calamine(推荐)
最常用的Excel读取库,支持.xlsx、.xls、.ods格式。
use calamine::{open_workbook, Reader, Xlsx, DataType};
fn read_excel_with_calamine() -> Result<(), Box<dyn std::error::Error>> {
let path = "example.xlsx";
let mut workbook: Xlsx<_> = open_workbook(path)?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
for row in range.rows() {
for cell in row {
match cell {
DataType::String(s) => println!("字符串: {}", s),
DataType::Float(f) => println!("数字: {}", f),
DataType::Int(i) => println!("整数: {}", i),
DataType::Bool(b) => println!("布尔: {}", b),
DataType::Empty => println!("空单元格"),
_ => println!("其他类型"),
}
}
}
}
Ok(())
}
2. rust_xlsxwriter
主要用于写入,但也支持读取:
use rust_xlsxwriter::{Workbook, XlsxError};
fn read_excel_with_xlsxwriter() -> Result<(), XlsxError> {
let workbook = Workbook::new("example.xlsx")?;
let worksheet = workbook.worksheet(0)?;
// 读取单元格数据
let cell_value = worksheet.read_cell(0, 0)?;
println!("A1: {:?}", cell_value);
Ok(())
}
3. 使用polars(数据处理场景)
适合数据分析场景:
use polars::prelude::*;
fn read_excel_with_polars() -> Result<DataFrame, PolarsError> {
let df = LazyFrame::scan_excel("example.xlsx", Default::default())?
.collect()?;
println!("{:?}", df);
Ok(df)
}
推荐方案
- calamine:功能全面,性能好,社区活跃
- polars:适合数据分析和处理场景
- rust_xlsxwriter:读写兼备,但读取功能相对简单
在Cargo.toml中添加依赖:
[dependencies]
calamine = "0.22"
# 或
polars = { version = "0.35", features = ["lazy", "excel"] }
# 或
rust_xlsxwriter = "0.36"
根据具体需求选择合适的库,calamine是最通用的选择。

