|
@@ -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],
|