应用场景:
当前端要导出表格时需要设置时间或者重量以及金钱的数字格式,可以运用worksheet.getColumn('需要进行格式转换的列数').numFmt来进行数字的格式转换,具体的格式也可以参考下图中的单元格格式中的数字格式。
下面是代码实现:
// 引入ExcelJS
const ExcelJS = require('exceljs');
// 创建工作簿
const workbook = new ExcelJS.Workbook();
// 添加工作表
const worksheet = workbook.addWorksheet('My Sheet');
// 设置表头
worksheet.columns = [
{ header: "编号", key: "sort", width: 10 },
{ header: "费用", key: "class", width: 20 },
{ header: "时间", key: "name", width: 20 },
{ header: "得分", key: "score", width: 10 },
];
// 添加数据
worksheet.addRow({ sort: 1, num: 123.2, time: "2023/6/5 6:20:08", score: 44 });
worksheet.addRow({ sort: 2, num: 120.3, time: "2023/6/5 6:20:08", score: 86 });
worksheet.addRow({ sort: 3, num: 27.33, time: "2023/6/5 6:20:08", score: 58 });
// 设置第二列为货币格式
worksheet.getColumn(2).numFmt = '$0.00';
// 设置第三列的时间格式为yyyy/m/d h:mm
worksheet.getColumn(3).numFmt = 'yyyy/m/d h:mm';
// 将工作簿保存到文件
workbook.xlsx.writeFile("example.xlsx")
.then(function() {
console.log("文件已保存。");
});
拓展:
我们也可以利用 getColumn
来读取列信息,使用exchCell进行遍历单元格列:
worksheet.getColumn("score").eachCell((cell, rowIdx) => {
console.log(cell.value, rowIdx);
// 得分, 1
// 99, 2
// 86, 3
});
我们也可以利用 getRow
来读取列信息,使用exchCell进行遍历单元格行:
worksheet.getRow(1).eachCell((cell, rowIdx) => {
console.log(cell.value, rowIdx);
// 编号, 1
// 费用, 2
// 时间, 3
// 得分, 4
});