jga*_*ria 29 javascript xlsx node.js
我正在尝试使用js-xlsx为我导出的excel文件设置固定的列/单元格宽度.
编辑:
以下是js-xlsx的来源:https://github.com/SheetJS/js-xlsx
小智 67
我在这里找到了写测试的片段https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js#L14-L19
有关快速参考,其中ws是您的工作表.
var wscols = [
{wch:6},
{wch:7},
{wch:10},
{wch:20}
];
ws['!cols'] = wscols;
Run Code Online (Sandbox Code Playgroud)
Icy*_*ool 11
扩展问题,如果您需要根据您的内容设置自动宽度,您可以这样写:
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)) }));
}
Run Code Online (Sandbox Code Playgroud)
此函数假定您的第一行包含最多的列。然后它尝试通过计算内容字符长度来找到每列中最宽的单元格。
iam*_*ord 10
没什么新东西,但显式使用该width属性使其更容易维护:
ws['!cols'] = [{ width: 20 }, { width: 20 }, { width: 150 } ]; //set col. widths
Run Code Online (Sandbox Code Playgroud)
以下是您可以赋予这些ColInfo对象的属性的完整列表,它们给出了每个宽度存在的原因,但它们指出您应该使用width> wpx> wch,具体取决于您拥有的工作表类型以及适用于您的用例的内容。更多内容可以在这里阅读: https: //docs.sheetjs.com/

与单元格宽度类似,您可以通过以下方式设置单元格高度
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
Run Code Online (Sandbox Code Playgroud)
提示:如果工作表数据是自动生成的,并且您不知道要填充多少行和列,则可以使用以下方法查找工作表中的行和列数,以进行单元格宽度/高度格式化。
var range = XLSX.utils.decode_range(ws['!ref']);
var noRows = range.e.r; // No.of rows
var noCols = range.e.c; // No. of cols
Run Code Online (Sandbox Code Playgroud)
小智 5
public exportAsExcelFile(json: any[], excelFileName: string): void {
const header = Object.keys(json[0]); // columns name
var wscols = [];
for (var i = 0; i < header.length; i++) { // columns length added
wscols.push({ wch: header[i].length + 5 })
}
const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
worksheet["!cols"] = wscols;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25320 次 |
| 最近记录: |