Browse Source

fix: excel export set width (#2206)

c37csq 2 years ago
parent
commit
9316d950b1
1 changed files with 23 additions and 1 deletions
  1. 23 1
      src/components/Excel/src/Export2Excel.ts

+ 23 - 1
src/components/Excel/src/Export2Excel.ts

@@ -6,6 +6,28 @@ const { utils, writeFile } = xlsx;
 
 const DEF_FILE_NAME = 'excel-list.xlsx';
 
+/**
+ * @param data source data
+ * @param worksheet worksheet object
+ * @param min min width
+ */
+function setColumnWidth(data, worksheet, min = 3) {
+  const obj = {};
+  worksheet['!cols'] = [];
+  data.forEach((item) => {
+    Object.keys(item).forEach((key) => {
+      const cur = item[key];
+      const length = cur.length;
+      obj[key] = Math.max(min, length);
+    });
+  });
+  Object.keys(obj).forEach((key) => {
+    worksheet['!cols'].push({
+      wch: obj[key],
+    });
+  });
+}
+
 export function jsonToSheetXlsx<T = any>({
   data,
   header,
@@ -20,7 +42,7 @@ export function jsonToSheetXlsx<T = any>({
   }
 
   const worksheet = utils.json_to_sheet(arrData, json2sheetOpts);
-
+  setColumnWidth(arrData, worksheet);
   /* add worksheet to workbook */
   const workbook: WorkBook = {
     SheetNames: [filename],