فهرست منبع

添加导出excel方法

gepangpang 2 سال پیش
والد
کامیت
d7cc1f7b21
4فایلهای تغییر یافته به همراه54 افزوده شده و 0 حذف شده
  1. 2 0
      global/Cargo.toml
  2. 41 0
      global/src/export_utils.rs
  3. 1 0
      global/src/lib.rs
  4. 10 0
      global/tests/export_utils_test.rs

+ 2 - 0
global/Cargo.toml

@@ -19,3 +19,5 @@ chrono = "0.4.26"
 tokio = { version = "1.31.0", features = ["full"] }
 base64 = "0.13.0"
 reqwest = "0.11.22"
+uuid = { version = "1.5.0", features = ["v4"] }
+simple_excel_writer = "0.2.0"

+ 41 - 0
global/src/export_utils.rs

@@ -0,0 +1,41 @@
+use chrono::Local;
+use simple_excel_writer::*;
+use uuid::Uuid;
+
+pub fn export_excel(header_array: Vec<&str>, data: Vec<Vec<&str>>, prefix_name: &str) -> String {
+    //本地存储路径
+    let save_path = "C:/Users/Public/Documents/";
+    //文件代理路径
+    let url_path = "http://127.0.0.1/";
+    let _ = std::fs::create_dir(format!("{}rust_export/", save_path));
+    // 当前时间
+    let date = Local::now().format("%Y-%m-%d").to_string();
+    let uid = Uuid::new_v4().to_string()[0..8].to_string();
+    let name = if prefix_name == "" { "".to_string() } else { format!("{}_", prefix_name) };
+    let file_name = format!("{}rust_export/{}{}_{}.xlsx", save_path, name, date, uid);
+    let url_name = format!("{}rust_export/{}{}_{}.xlsx", url_path, name, date, uid);
+    let mut wb = Workbook::create(&file_name);
+    let mut sheet = wb.create_sheet("sheet1");
+    // 设置行宽
+    for _ in 0..header_array.len() {
+        sheet.add_column(Column { width: 30.0 });
+    }
+    wb.write_sheet(&mut sheet, |sheet_writer| {
+        let sw = sheet_writer;
+        let mut header_row = Row::new();
+        for value in header_array.clone() {
+            header_row.add_cell(value);
+        }
+        sw.append_row(header_row).expect(format!("创建excel标题错误!header:{:?}", header_array).as_str());
+        for cell in data.clone() {
+            let mut data_row = Row::new();
+            for value in cell.clone() {
+                data_row.add_cell(value);
+            }
+            sw.append_row(data_row).expect(format!("添加excel数据错误!cell:{:?}", cell).as_str());
+        }
+        sw.append_row(Default::default())
+    }).expect("写入excel错误!");
+    wb.close().expect("关闭excel错误!");
+    url_name
+}

+ 1 - 0
global/src/lib.rs

@@ -2,3 +2,4 @@ pub mod public_params;
 pub mod log_utils;
 pub mod params;
 pub mod trace_stack;
+pub mod export_utils;

+ 10 - 0
global/tests/export_utils_test.rs

@@ -0,0 +1,10 @@
+use tracing::trace;
+use global::export_utils;
+
+#[tokio::test]
+async fn export_excel() {
+    let header = vec!["标题1", "标题2"];
+    let data = vec![vec!["第一行数据1", "第一行数据2"], vec!["第二行数据1", "第二行数据2"]];
+    let file_name = export_utils::export_excel(header,data,"");
+    trace!(?file_name);
+}