rust 导出 excel

本文介绍了如何在Rust后端实现导出Excel的功能。通过引入相关依赖,提供了一个基本的代码实现,读者可以根据示例代码自定义以满足具体需求。前端可以通过请求返回的URL下载生成的Excel文件。
摘要由CSDN通过智能技术生成

导出excel功能是很常见的功能,读者可根据我的代码,自行修改成需要的内容。

引入依赖

[dependencies]
# 用来生成新的文件名
uuid = {version= "0.7",features=["serde","v4"]}
# 用于生成存储时的路径名
chrono = "*"
# 导出excel关键依赖
simple_excel_writer = "0.1.7"

代码实现

返回url,前端通过请求获取到的url,来下载excel

use uuid::Uuid;
use chrono::prelude::*;
use simple_excel_writer::*;


pub fn export() -> String {
    //本地存储路径
    let save_path= "E:/";
    //文件代理路径
    let url_path= "http://127.0.0.1/";
    // 当前时间
    let date = Local::now().format("%Y-%m-%d").to_string(); 
    std::fs::create_dir(format!("{}{}/",save_path, date.clone()));
    let uid = Uuid::new_v4().to_string()[0..8].to_string();
    let filename =format!("{}{}/{}.xlsx",save_path,date,uid) ;
    let url_name =format!("{}{}/{}.xlsx",url_path,date,uid) ;
    let mut wb = Workbook::create(&filename);
    let mut sheet = wb.create_sheet("第一页");
    // 设置行宽
    sheet.add_column(Column { width: 30.0 });
    sheet.add_column(Column { width: 30.0 });
    sheet.add_column(Column { width: 30.0 });
    sheet.add_column(Column { width: 30.0 });

    wb.write_sheet(&mut sheet, |sheet_writer| {
        let sw = sheet_writer;
        sw.append_row(row!["姓名", "标题"])?;
        sw.append_row(row!["张三","你好"])
    }).expect("写入excel错误!");

    let mut sheet = wb.create_sheet("第二页");
    wb.write_sheet(&mut sheet, |sheet_writer| {
        let sw = sheet_writer;
        sw.append_row(row!["姓名", "标题"])?;
        sw.append_row(row!["张三","你好"])
    }).expect("写入excel错误!");
    wb.close().expect("关闭excel错误!");
    url_name
}
Rust有许多库可以用于解析Excel文件。其中一个流行的库是`xlsx-rs`。以下是一个简单的例子,说明如何使用`xlsx-rs`库来拆分Excel文件: ```rust use std::error::Error; use std::fs::File; use std::path::Path; use xlsx::Xlsx; fn main() -> Result<(), Box<dyn Error>> { // 打开Excel文件 let path = Path::new("example.xlsx"); let file = File::open(path)?; let mut excel = Xlsx::new(file)?; // 获取工作表列表 let sheet_names = excel.sheet_names(); // 遍历工作表,拆分文件 for sheet_name in sheet_names { // 获取工作表数据 let sheet_data = excel.worksheet_range(&sheet_name)?; // 创建新的Excel文件 let mut new_excel = Xlsx::default(); // 将工作表数据添加到新文件中 let mut new_sheet = new_excel.add_worksheet(&sheet_name)?; new_sheet.range("A1").merge_range("A1:C1")?; new_sheet.range("A1").set_value("Header")?; new_sheet.range("A2:C2").set_values(&sheet_data)?; // 将新文件保存 let new_path = format!("{}_{}.xlsx", path.file_stem().unwrap().to_str().unwrap(), sheet_name); let new_file = File::create(new_path)?; new_excel.write(new_file)?; } Ok(()) } ``` 在这个例子中,我们首先打开Excel文件,然后获取工作表列表。接下来,我们遍历每个工作表,并将其数据添加到新的Excel文件中。最后,我们将新的Excel文件保存到磁盘上。 请注意,在这个例子中,我们假设原始Excel文件只包含一个工作表。如果原始文件包含多个工作表,它们将被拆分成多个Excel文件,每个文件包含一个工作表。如果您想要将多个工作表合并到一个文件中,请参阅`xlsx-rs`文档中的其他方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值