Rust如何操作Excel文件
最近在学习Rust,想用Rust处理Excel文件,但不太清楚具体该怎么做。请问有哪些推荐的Rust库可以用来读写Excel文件?比如xlsx、csv这些格式该怎么操作?最好能提供一些简单的代码示例,比如如何读取单元格数据或者写入新内容。另外,这些库的性能和兼容性如何?有没有什么需要特别注意的地方?
2 回复
使用calamine库读取Excel,用rust_xlsxwriter库写入。示例代码:
use calamine::{open_workbook, Xlsx, Reader};
let mut workbook: Xlsx<_> = open_workbook("file.xlsx")?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
for row in range.rows() {
println!("{:?}", row);
}
}
写入需安装rust_xlsxwriter,支持格式设置。
在Rust中操作Excel文件,推荐使用以下库:
主要库推荐
1. calamine(推荐)
专门用于读取Excel文件的库,支持.xlsx、.xls格式。
Cargo.toml:
[dependencies]
calamine = "0.22"
读取Excel示例:
use calamine::{open_workbook, Reader, Xlsx};
fn read_excel() -> Result<(), Box<dyn std::error::Error>> {
let mut workbook: Xlsx<_> = open_workbook("data.xlsx")?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
for row in range.rows() {
for cell in row {
print!("{:?}\t", cell);
}
println!();
}
}
Ok(())
}
2. rust_xlsxwriter
用于创建和写入Excel文件。
Cargo.toml:
[dependencies]
rust_xlsxwriter = "1.1.0"
写入Excel示例:
use rust_xlsxwriter::{Workbook, XlsxError};
fn write_excel() -> Result<(), XlsxError> {
let mut workbook = Workbook::new();
let worksheet = workbook.add_worksheet();
// 写入数据
worksheet.write_string(0, 0, "姓名")?;
worksheet.write_string(0, 1, "年龄")?;
worksheet.write_number(1, 0, 25)?;
workbook.save("output.xlsx")?;
Ok(())
}
完整示例:读取并处理数据
use calamine::{open_workbook, DataType, Reader, Xlsx};
fn process_excel_data() -> Result<(), Box<dyn std::error::Error>> {
let mut workbook: Xlsx<_> = open_workbook("data.xlsx")?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
for (row_index, row) in range.rows().enumerate() {
if row_index == 0 { continue; } // 跳过标题行
let name = row[0].get_string().unwrap_or("");
let age: i32 = row[1].get_float().unwrap_or(0.0) as i32;
println!("姓名: {}, 年龄: {}", name, age);
}
}
Ok(())
}
选择建议
- 仅读取:使用
calamine - 仅写入:使用
rust_xlsxwriter - 读写都需要:组合使用两个库
这些库都提供了良好的性能和易用性,适合大多数Excel文件操作场景。

