Rust如何操作Excel文件

最近在学习Rust语言,想用Rust来处理Excel文件,但不知道有哪些好用的库可以使用。有没有比较成熟的Rust库可以读取、写入和修改Excel文件?希望支持xlsx格式,最好能提供一些简单的代码示例。另外,如果需要对大量数据进行操作,性能方面表现如何?

2 回复

可以使用calaminerust_xlsxwriter库。calamine适合读取Excel文件,支持xlsx、xls等格式;rust_xlsxwriter则用于创建和写入Excel文件。安装依赖后,简单几行代码就能读写数据,比如读取单元格内容或生成带格式的表格。


在Rust中操作Excel文件,推荐使用以下库:

主要库推荐

1. calamine(推荐)

专门处理Excel文件的纯Rust库,支持.xlsx、.xls格式:

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!("{} ", cell);
            }
            println!();
        }
    }
    Ok(())
}

2. rust_xlsxwriter

用于创建和写入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, "Hello")?;
    worksheet.write_number(0, 1, 123)?;
    
    workbook.save("output.xlsx")?;
    Ok(())
}

完整示例

// Cargo.toml 依赖
// calamine = "0.22"
// rust_xlsxwriter = "0.34"

use calamine::{open_workbook, Reader, Xlsx, DataType};
use rust_xlsxwriter::{Workbook, Format, Color};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 读取Excel
    let mut workbook: Xlsx<_> = open_workbook("input.xlsx")?;
    
    if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
        for (row_num, row) in range.rows().enumerate() {
            println!("行 {}: {:?}", row_num, row);
        }
    }

    // 写入Excel
    let mut workbook = Workbook::new();
    let worksheet = workbook.add_worksheet();
    
    let bold_format = Format::new().set_bold().set_font_color(Color::Red);
    
    worksheet.write_string_with_format(0, 0, "姓名", &bold_format)?;
    worksheet.write_string(1, 0, "张三")?;
    worksheet.write_number(1, 1, 25)?;
    
    workbook.save("output.xlsx")?;
    
    Ok(())
}

主要特性

  • calamine: 读取性能优秀,内存占用低
  • rust_xlsxwriter: 功能丰富,支持格式设置、图表等
  • 两个库都支持.xlsx格式,calamine还支持旧的.xls格式

选择哪个库取决于你的具体需求:读取用calamine,写入用rust_xlsxwriter。

回到顶部