首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用js-xlsx导出.xlsx文件时,如何根据内容设置整列宽度?

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

Stack Overflow用户
提问于 2019-06-25 20:14:12
回答 1查看 2.2K关注 0票数 2

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

How to set cell width when export .xlsx files with js-xlsx

我尝试了上面的方法。

代码语言:javascript
复制
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;

我可以通过从屏幕上呈现的表中获取列的名称来设置宽度。但是我得到的问题是,假设列名的名称是"Title“,它的行有一些值,比如"Australia”,那么列名的长度就会变小,整个列的宽度也没有正确设置。

实际

期望的

EN

回答 1

Stack Overflow用户

发布于 2021-01-26 21:04:17

代码语言:javascript
复制
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;

}

来自https://github.com/SheetJS/sheetjs/issues/1473#issuecomment-580648494

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56753806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档