Rust如何读取和写入xlsx文件
我想用Rust处理Excel文件,但不知道该如何读取和写入xlsx格式的文件。目前有哪些可靠的Rust库可以实现这个功能?需要特别注意哪些问题?比如性能、内存占用或者特殊格式支持等方面。希望能得到一些实际代码示例和最佳实践建议。
2 回复
使用calamine库读取xlsx,用rust_xlsxwriter库写入xlsx。安装依赖后,calamine可加载文件读取数据,rust_xlsxwriter能创建新文件并写入内容。简单易用。
在Rust中读取和写入xlsx文件,推荐使用以下库:
主要库推荐
calamine - 最流行的Excel文件读取库
use calamine::{open_workbook, Reader, Xlsx};
// 读取xlsx文件
fn read_xlsx() -> 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 {
println!("Cell value: {:?}", cell);
}
}
}
Ok(())
}
rust_xlsxwriter - 功能强大的xlsx写入库
use rust_xlsxwriter::{Workbook, XlsxError};
// 写入xlsx文件
fn write_xlsx() -> Result<(), XlsxError> {
let mut workbook = Workbook::new();
let worksheet = workbook.add_worksheet();
// 写入数据
worksheet.write_string(0, 0, "Hello")?;
worksheet.write_number(0, 1, 123)?;
worksheet.write_formula(1, 0, "=A1*2")?;
workbook.save("output.xlsx")?;
Ok(())
}
安装依赖
在Cargo.toml中添加:
[dependencies]
calamine = "0.22"
rust_xlsxwriter = "0.34"
完整示例
use calamine::{open_workbook, Reader, Xlsx};
use rust_xlsxwriter::{Workbook, Format, Color};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 读取
let mut workbook: Xlsx<_> = open_workbook("input.xlsx")?;
// 写入
let mut new_workbook = Workbook::new();
let worksheet = new_workbook.add_worksheet();
// 设置格式
let bold_format = Format::new().set_bold();
worksheet.write_string_with_format(0, 0, "Data", &bold_format)?;
new_workbook.save("output.xlsx")?;
Ok(())
}
这两个库分别专注于读取和写入,是目前Rust生态中最成熟的选择。calamine支持读取xlsx、xls、ods格式,rust_xlsxwriter支持创建包含格式、公式、图表等的xlsx文件。

