注意,前情提示:
本代码基于《Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)》
传送门Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)_你挚爱的强哥❤给你发来1条消息❤-CSDN博客
在/api/demo/文件夹下面创建exportAndDownloadExcel.js
代码内容
const $g = global.SG.$g, fs = global.SG.fs, router = global.SG.router, xlsx = global.SG.xlsx; module.exports = global.SG.router; const excelData = [ ["表头第一列", "表头第二列", "表头第三列"], ["第一行第一列", "第一行第二列", "第一行第三列"], ["第二行第一列", "第二行第二列", "第二行第三列"], ["第三行第一列", "第三行第二列", "第三行第三列"]]; const tempExcelFilePath = "./temp/download/{fileName}.xlsx";//临时存储下载导出文件的位置(定时一会儿后就会自动删除对应文件夹的文临时文件) const exportExcelFileName = "强哥导出的文件名.xlsx"; const sheetName = "强哥的Sheet"; const mkdirs = $g.dir.mkdirsByFilePath;//递归创建文件夹目录(基于文件路径) //导出Excel,必须使用get方式,在客户端用window.open直接访问接口就可以下载了 router.get("/demo/exportAndDownloadExcel", (req, res) => { const randomFilePath = tempExcelFilePath .replace(/{fileName}/g, `sgExportExcel-${$g.date.timestamp()}`); mkdirs(randomFilePath, () => { const buffer = xlsx.build([{name: sheetName, data: excelData}]); fs.writeFile(randomFilePath, buffer, err => { console.log(`${$g.date.nowtime()}写入&创建${randomFilePath}${err ? "失败" : "成功"}`); res.download(randomFilePath, exportExcelFileName, err => { console.log(`${$g.date.nowtime()}下载${randomFilePath}${err ? "失败" : "成功"}`); err || $g.dir.delayDestroyFile(randomFilePath);//延时60秒销毁服务器文件 }); }); } ); });
在index.js最后一行加入
app.use(API_PATH, require(`.${API_PATH}/demo/exportAndDownloadExcel`));//导出并下载Excel
运行
cnpm i node-xlsx & node index