Browse Source

Feat/modify input excel (#2587)

* feat: optimize parameter

* Revert "feat: optimize parameter"

This reverts commit 957dfc95ddab598f260d3974732d56f802e7f0bd.

* feat: can input irregulate excel
jsong 2 years ago
parent
commit
256e0275fe
1 changed files with 36 additions and 2 deletions
  1. 36 2
      src/components/Excel/src/ImportExcel.vue

+ 36 - 2
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) {