export_utils.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. use chrono::Local;
  2. use simple_excel_writer::*;
  3. use uuid::Uuid;
  4. pub fn export_excel(header_array: Vec<&str>, data: Vec<Vec<String>>, prefix_name: &str) -> String {
  5. //本地存储路径
  6. let save_path = "C:/Users/Public/Documents/";
  7. let _ = std::fs::create_dir(format!("{}rust_export/", save_path));
  8. // 当前时间
  9. let date = Local::now().format("%Y-%m-%d").to_string();
  10. let uid = Uuid::new_v4().to_string()[0..8].to_string();
  11. let name = if prefix_name == "" { "".to_string() } else { format!("{}_", prefix_name) };
  12. let file_name = format!("{}rust_export/{}{}_{}.xlsx", save_path, name, date, uid);
  13. let mut wb = Workbook::create(&file_name);
  14. let mut sheet = wb.create_sheet("sheet1");
  15. // 设置行宽
  16. for _ in 0..header_array.len() {
  17. sheet.add_column(Column { width: 30.0 });
  18. }
  19. wb.write_sheet(&mut sheet, |sheet_writer| {
  20. let sw = sheet_writer;
  21. let mut header_row = Row::new();
  22. for value in header_array.clone() {
  23. header_row.add_cell(value);
  24. }
  25. sw.append_row(header_row).expect(format!("创建excel标题错误!header:{:?}", header_array).as_str());
  26. for cell in data.clone() {
  27. let mut data_row = Row::new();
  28. for value in cell.clone() {
  29. data_row.add_cell(value);
  30. }
  31. sw.append_row(data_row).expect(format!("添加excel数据错误!cell:{:?}", cell).as_str());
  32. }
  33. sw.append_row(Default::default())
  34. }).expect("写入excel错误!");
  35. wb.close().expect("关闭excel错误!");
  36. file_name
  37. }