Rust如何实现Excel文件的读写

在Rust中如何高效地读写Excel文件?目前有哪些成熟的库可以使用,比如calaminexlsx?这些库是否支持.xls和.xlsx格式?读写过程中如何处理大数据量的性能问题?另外,如何实现单元格格式、公式等高级功能的操作?希望有具体的代码示例和使用注意事项。

2 回复

Rust中可以使用以下库实现Excel文件读写:

读取Excel文件:

  1. calamine - 最常用的Excel读取库
use calamine::{open_workbook, Xlsx, Reader};

let mut workbook: Xlsx<_> = open_workbook("file.xlsx")?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
    for row in range.rows() {
        for cell in row {
            println!("{}", cell);
        }
    }
}

写入Excel文件:

  1. rust_xlsxwriter - 功能丰富的写入库
use rust_xlsxwriter::{Workbook, 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")?;

其他选择:

  • xlsx - 另一个读写库
  • polars - 数据处理库,支持Excel I/O

安装依赖: 在Cargo.toml中添加:

[dependencies]
calamine = "0.22"
rust_xlsxwriter = "0.36"

这些库支持.xlsx格式,calamine还支持.xls格式。注意处理可能的错误和数据类型转换。


在Rust中,可以使用 calamine 库读取Excel文件,使用 rust_xlsxwriter 库写入Excel文件。

读取Excel文件

  1. 添加依赖:
[dependencies]
calamine = "0.22"
  1. 示例代码:
use calamine::{open_workbook, Reader, Xlsx};

fn read_excel() -> Result<(), Box<dyn std::error::Error>> {
    let mut workbook: Xlsx<_> = open_workbook("input.xlsx")?;
    
    if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
        for row in range.rows() {
            for cell in row {
                print!("{:?} ", cell);
            }
            println!();
        }
    }
    Ok(())
}

写入Excel文件

  1. 添加依赖:
[dependencies]
rust_xlsxwriter = "1.1.5"
  1. 示例代码:
use rust_xlsxwriter::{Workbook, XlsxError};

fn write_excel() -> Result<(), XlsxError> {
    let mut workbook = Workbook::new();
    let worksheet = workbook.add_worksheet();
    
    // 写入数据
    worksheet.write(0, 0, "Hello")?;
    worksheet.write(0, 1, "World")?;
    worksheet.write(1, 0, 123)?;
    worksheet.write(1, 1, 456)?;
    
    workbook.save("output.xlsx")?;
    Ok(())
}

主要特性:

  • calamine:支持读取.xlsx、.xls、.xlsm格式
  • rust_xlsxwriter:支持创建新Excel文件,包含格式设置、图表等功能

这两个库配合使用可以完成大多数Excel文件操作需求。

回到顶部