后端生成excel
场景:每日订单数据导出为excel。
使用npm库 node-xlsx
//引入node-xlsx包,以及生成文件相关的fs,path包
const xlsx = require("node-xlsx");
const fs = require("fs");
const path = require("path");
//定义excel数据
let excelDataMap = [];
//设置excel第一行的数据(表头)
excelDataMap[0] = [
"订单号",
"xxx",
"xxx",
"xxx",
"xxx",
...
];
let index = 0;
//拼接Excel的其他数据,一个订单一行
for (const order of orders) {
index++;
excelDataMap.push([
order.code,
xxxx,
xxxx,
xxxx,
xxxx,
...
]);
}
//设置Excel的行宽
const sheetOptions = {
"!cols": [
{ wch: 20 },
{ wch: 20 },
{ wch: 20 },
{ wch: 20 },
{ wch: 20 },
...
],
};
//使用xlsx库创建excel原数据buffer
const buffer = xlsx.build([{ name: "订单", data: excelDataMap }], {
sheetOptions,
});
//生成文件
let time = new Date().getTime();
await new Promise((resolve, reject) => {
fs.writeFile(
path.join(
__dirname,
`./static/order-${time}.xlsx`
),
buffer,
(err, buffer) => {
if (err) {
console.log(err);
reject(err);
} else {
resolve(buffer);
}
}
);
});
node-xlsx的详细参数,可自行查阅官方git文档