From 256e0275fe8213852ea390c42ab2020aeeebcc42 Mon Sep 17 00:00:00 2001
From: jsong <32285893+jsong93@users.noreply.github.com>
Date: Mon, 27 Feb 2023 12:52:09 +0800
Subject: [PATCH] Feat/modify input excel (#2587)

---
 src/components/Excel/src/ImportExcel.vue | 38 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/components/Excel/src/ImportExcel.vue b/src/components/Excel/src/ImportExcel.vue
index 065968b..3ed98a9 100644
--- a/src/components/Excel/src/ImportExcel.vue
+++ b/src/components/Excel/src/ImportExcel.vue
@@ -42,6 +42,40 @@
       const inputRef = ref<HTMLInputElement | null>(null);
       const loadingRef = ref<Boolean>(false);
 
+      function shapeWorkSheel(sheet: XLSX.WorkSheet, range: XLSX.Range) {
+        let str = ' ',
+          char = 65,
+          customWorkSheet = {
+            t: 's',
+            v: str,
+            r: '<t> </t><phoneticPr fontId="1" type="noConversion"/>',
+            h: str,
+            w: str,
+          };
+        if (!sheet || !sheet['!ref']) return [];
+        let c = 0,
+          r = 1;
+        while (c < range.e.c + 1) {
+          while (r < range.e.r + 1) {
+            if (!sheet[String.fromCharCode(char) + r]) {
+              sheet[String.fromCharCode(char) + r] = customWorkSheet;
+            }
+            r++;
+          }
+          r = 1;
+          str += ' ';
+          customWorkSheet = {
+            t: 's',
+            v: str,
+            r: '<t> </t><phoneticPr fontId="1" type="noConversion"/>',
+            h: str,
+            w: str,
+          };
+          c++;
+          char++;
+        }
+      }
+
       /**
        * @description: 第一行作为头部
        */
@@ -49,8 +83,8 @@
         if (!sheet || !sheet['!ref']) return [];
         const headers: string[] = [];
         // A3:B7=>{s:{c:0, r:2}, e:{c:1, r:6}}
-        const range = XLSX.utils.decode_range(sheet['!ref']);
-
+        const range: XLSX.Range = XLSX.utils.decode_range(sheet['!ref']);
+        shapeWorkSheel(sheet, range);
         const R = range.s.r;
         /* start in the first row */
         for (let C = range.s.c; C <= range.e.c; ++C) {
--
libgit2 0.23.3