export_utils.rs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. }
  38. pub fn export_excel_sheets(header_array: Vec<Vec<&str>>, data: Vec<Vec<Vec<String>>>, sheet_name: Vec<&str>, prefix_name: &str) -> String {
  39. //本地存储路径
  40. let save_path = "C:/Users/Public/Documents/";
  41. let _ = std::fs::create_dir(format!("{}rust_export/", save_path));
  42. // 当前时间
  43. let date = Local::now().format("%Y-%m-%d").to_string();
  44. let uid = Uuid::new_v4().to_string()[0..8].to_string();
  45. let name = if prefix_name == "" { "".to_string() } else { format!("{}_", prefix_name) };
  46. let file_name = format!("{}rust_export/{}{}_{}.xlsx", save_path, name, date, uid);
  47. let mut wb = Workbook::create(&file_name);
  48. if header_array.len() != data.len() { return "表头和数据数量有误,请检查后再试!".to_string(); }
  49. for (index, headers) in header_array.iter().enumerate() {
  50. let mut sheet = wb.create_sheet(sheet_name[index]);
  51. // 设置行宽
  52. for _ in 0..headers.len() {
  53. sheet.add_column(Column { width: 20.0 });
  54. }
  55. wb.write_sheet(&mut sheet, |sheet_writer| {
  56. let sw = sheet_writer;
  57. let mut header_row = Row::new();
  58. for value in headers.clone() {
  59. header_row.add_cell(value);
  60. }
  61. sw.append_row(header_row).expect(format!("创建excel标题错误!header:{:?}", header_array).as_str());
  62. for cell in data[index].clone() {
  63. let mut data_row = Row::new();
  64. for value in cell.clone() {
  65. data_row.add_cell(value);
  66. }
  67. sw.append_row(data_row).expect(format!("添加excel数据错误!cell:{:?}", cell).as_str());
  68. }
  69. sw.append_row(Default::default())
  70. }).expect("写入excel错误!");
  71. }
  72. wb.close().expect("关闭excel错误!");
  73. file_name
  74. }