Rust如何用xlsx库读写Excel文件
我想在Rust项目中读写Excel文件,但不知道如何使用xlsx库来实现。有没有完整的代码示例展示如何用xlsx库读取和写入.xlsx文件?具体想知道:
- 如何安装和引入xlsx库?
- 读取Excel文件时如何处理不同的工作表?
- 如何获取单元格数据并处理不同类型(字符串、数字等)?
- 写入Excel时如何创建新工作表、设置单元格值和格式?
- 有没有需要特别注意的性能问题或常见错误?
如果能提供一个从安装到读写的完整示例就太感谢了!
2 回复
使用calamine库读取xlsx文件,使用rust_xlsxwriter库写入xlsx文件。
读取示例:
use calamine::{open_workbook, Reader, Xlsx};
let mut workbook: Xlsx<_> = open_workbook("file.xlsx")?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
for row in range.rows() {
// 处理每行数据
}
}
写入示例:
use rust_xlsxwriter::{Workbook, XlsxError};
let mut workbook = Workbook::new();
let worksheet = workbook.add_worksheet();
worksheet.write(0, 0, "Hello")?;
workbook.save("demo.xlsx")?;
在Rust中,可以使用 calamine 库读写Excel文件(.xlsx格式)。以下是具体实现方法:
1. 添加依赖
在 Cargo.toml 中添加:
[dependencies]
calamine = "0.22"
2. 读取Excel文件
use calamine::{open_workbook, Reader, Xlsx, DataType};
fn read_excel() -> Result<(), Box<dyn std::error::Error>> {
// 打开Excel文件
let mut workbook: Xlsx<_> = open_workbook("example.xlsx")?;
// 获取第一个工作表
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(())
}
3. 写入Excel文件
calamine 主要专注于读取,写入功能有限。如果需要完整读写功能,建议使用 rust_xlsxwriter:
在 Cargo.toml 中添加:
[dependencies]
rust_xlsxwriter = "1.1.0"
写入示例:
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_string(1, 0, "张三")?;
worksheet.write_number(1, 1, 25)?;
worksheet.write_string(2, 0, "李四")?;
worksheet.write_number(2, 1, 30)?;
// 保存文件
workbook.save("output.xlsx")?;
Ok(())
}
4. 主要特性
- calamine: 轻量级,专注于读取,支持.xls和.xlsx格式
- rust_xlsxwriter: 功能完整,支持创建和修改Excel文件
选择哪个库取决于你的具体需求:如果主要是读取数据,用 calamine;如果需要创建和写入复杂Excel文件,用 rust_xlsxwriter。

