Javascript 使用js xlsx导出.xlsx文件时,如何根据内容设置整个列的宽度?

Javascript 使用js xlsx导出.xlsx文件时,如何根据内容设置整个列的宽度?,javascript,xlsx,js-xlsx,sheetjs,Javascript,Xlsx,Js Xlsx,Sheetjs,我想在使用js xlsx导出.xlsx文件时,将列宽设置为该列内容的最大长度 我试着用上面的 let sheet = workBook.Sheets.Sheet1; let wscols = []; const colNode = table.tHead.rows[0].childNodes; // getting the column names from the table rendered on the page const colNumber = colNode.length; for

我想在使用js xlsx导出.xlsx文件时,将列宽设置为该列内容的最大长度

我试着用上面的

let sheet = workBook.Sheets.Sheet1;
let wscols = [];
const colNode = table.tHead.rows[0].childNodes; // getting the column names from the table rendered on the page
const colNumber = colNode.length;
for(let i = 0; i < colNumber; i++){
    wscols.push({
        wch: colNode[i].innerText.length * 1.28
    })
}
sheet['!cols'] = wscols;
let sheet=workBook.Sheets.Sheet1;
设wscols=[];
const colNode=table.tHead.rows[0].childNodes;//从页面上呈现的表中获取列名
const colNumber=colNode.length;
for(设i=0;i
我可以通过从屏幕上呈现的表中获取列名来设置宽度。但我遇到的问题是,假设列名的名称是“Title”,并且它的行有一些值,比如“Australia”,那么列名的长度就会变小,并且整个列宽没有正确设置

实际的

期望

私有autofitColumns(json:any[],工作表:XLSX.worksheet,标题?:字符串[]){
const jsonKeys=header?header:Object.keys(json[0]);
让objectMaxLength=[];
for(设i=0;i=l
?对象最大长度[j]
:l;
}
}
让key=jsonkey;
for(设j=0;j=键[j]。长度
?对象最大长度[j]
:键[j]。长度;
}
}
const wscols=objectMaxLength.map(w=>{return{width:w});
工作表[“!cols”]=wscols;
}


循环浏览您的数据,并尝试找出是否有字符数大于列标题的文本,如果是,请使用这些值设置
wch
参数,因为有数百万数据。这是一个很好的解决方案。非常感谢。
private autofitColumns(json: any[], worksheet: XLSX.WorkSheet, header?: string[]) {

const jsonKeys = header ? header : Object.keys(json[0]);

let objectMaxLength = []; 
for (let i = 0; i < json.length; i++) {
  let value = json[i];
  for (let j = 0; j < jsonKeys.length; j++) {
    if (typeof value[jsonKeys[j]] == "number") {
      objectMaxLength[j] = 10;
    } else {

      const l = value[jsonKeys[j]] ? value[jsonKeys[j]].length : 0;

      objectMaxLength[j] =
        objectMaxLength[j] >= l
          ? objectMaxLength[j]
          : l;
    }
  }

  let key = jsonKeys;
  for (let j = 0; j < key.length; j++) {
    objectMaxLength[j] =
      objectMaxLength[j] >= key[j].length
        ? objectMaxLength[j]
        : key[j].length;
  }
}

const wscols = objectMaxLength.map(w => { return { width: w} });

worksheet["!cols"] = wscols;