在 Rust 中处理 Excel:库与代码示例
Rust 语言以其高性能和安全性著称,非常适合处理表格数据。如果您需要读取、创建或编辑 Excel 文件(.xlsx、.xls 格式),Rust 生态系统中有几个成熟的库可供使用。本文将介绍三个主要库:calamine(读取)、rust_xlsxwriter(写入)和 xlsx(完整流程)。您将了解如何安装它们,并看到可运行的代码示例。
calamine 库——读取 Excel 文件
calamine 是一个快速轻量级的库,用于读取 Excel 文件(xlsx、xls、xlsb、ods)。它无需安装外部依赖,开箱即用。支持读取单元格、工作表、公式和元数据。
安装
[dependencies]calamine = "0.26"示例:从文件中读取数据
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> 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 { // 每个单元格都是一个 DataType match cell { calamine::Data::String(s) => print!("{} ", s), calamine::Data::Float(f) => print!("{} ", f), calamine::Data::Int(i) => print!("{} ", i), _ => print!("? "), } } println!(); } }
Ok(())}这段代码打开 data.xlsx 文件,读取 Sheet1 工作表,并逐行输出所有单元格。calamine 会自动检测数据类型(字符串、数字、日期等)。
rust_xlsxwriter 库——创建和写入 Excel
rust_xlsxwriter 是一个功能强大的库,用于创建 xlsx 文件。它支持格式化、合并单元格、图表、条件格式等功能。它是 Python 库 xlsxwriter 的直接对应版本。
安装
[dependencies]rust_xlsxwriter = "0.76"示例:创建简单报告
use rust_xlsxwriter::{Workbook, Format, Color};
fn main() -> Result<(), Box<dyn std::error::Error>> { let mut workbook = Workbook::new();
// 创建标题格式 let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue);
// 添加工作表 let sheet = workbook.add_worksheet();
// 写入标题 sheet.write_with_format(0, 0, "姓名", &header_format)?; sheet.write_with_format(0, 1, "年龄", &header_format)?; sheet.write_with_format(0, 2, "城市", &header_format)?;
// 写入数据 sheet.write(1, 0, "安娜")?; sheet.write(1, 1, 28)?; sheet.write(1, 2, "莫斯科")?;
sheet.write(2, 0, "伊万")?; sheet.write(2, 1, 35)?; sheet.write(2, 2, "圣彼得堡")?;
// 保存到文件 workbook.save("report.xlsx")?;
println!("文件 report.xlsx 已成功创建!"); Ok(())}在此示例中,我们创建了一个带有格式化标题(粗体文字、蓝色背景上的白色字体)和两行数据的文件。rust_xlsxwriter 还支持图表、图片和数据透视表。
xlsx 库——完整流程(读取 + 写入)
xlsx 是一个通用库,既可以读取也可以创建 xlsx 文件。它不如前两者流行,但