首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用js-xlsx导出.xlsx文件时如何设置单元格宽度

使用js-xlsx导出.xlsx文件时如何设置单元格宽度
EN

Stack Overflow用户
提问于 2014-06-24 20:28:56
回答 7查看 79.3K关注 0票数 51

我正在尝试用js为导出的excel文件设置一个固定的列/单元格宽度。

编辑:

以下是js-xlsx:https://github.com/SheetJS/js-xlsx的来源

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-06-28 11:28:33

我在这里找到了一个片段--写测试-- https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js#L14-L19

作为快速参考,ws是您的工作表。

代码语言:javascript
复制
var wscols = [
    {wch:6},
    {wch:7},
    {wch:10},
    {wch:20}
];

ws['!cols'] = wscols;
票数 106
EN

Stack Overflow用户

发布于 2019-08-27 11:01:02

扩展该问题时,如果需要根据内容设置自动宽度,可以如下所示:

代码语言:javascript
复制
const worksheet = XLSX.utils.aoa_to_sheet(arrayOfArray);
worksheet['!cols'] = fitToColumn(arrayOfArray);

function fitToColumn(arrayOfArray) {
    // get maximum character of each column
    return arrayOfArray[0].map((a, i) => ({ wch: Math.max(...arrayOfArray.map(a2 => a2[i] ? a2[i].toString().length : 0)) }));
}

此函数假定您的第一行拥有大多数列。然后,通过计算内容字符长度,尝试在每列中找到最宽的单元格。

票数 24
EN

Stack Overflow用户

发布于 2019-01-24 11:19:19

与单元格宽度类似,可以按以下方式设置单元格高度

代码语言:javascript
复制
var wsrows =  [
                 {hpt: 12}, // row 1 sets to the height of 12 in points
                 {hpx: 16}, // row 2 sets to the height of 16 in pixels
               ];

ws['!rows'] = wsrows; // ws - worksheet

提示:,如果您的工作表数据是自动生成的,并且您不知道要填充多少行和列,那么您可以使用以下方法查找工作表中的行和列数,以便进行单元格宽度/高度格式化。

代码语言:javascript
复制
var range = XLSX.utils.decode_range(ws['!ref']);
var noRows = range.e.r; // No.of rows
var noCols = range.e.c; // No. of cols
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24395693

复制
相关文章

相似问题

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