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