博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
阅读量:2032 次
发布时间:2019-04-28

本文共 1544 字,大约阅读时间需要 5 分钟。

注意,前情提示:

本代码基于《Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)》
传送门

在/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

转载地址:http://ydxaf.baihongyu.com/

你可能感兴趣的文章
JVM内存模型
查看>>
springbootTestDao
查看>>
RabbitMQ 惰性队列Lazy Queue
查看>>
Mysql存在唯一索引条件下,实现插入如果重复则自动更新
查看>>
synchronized和ReentrantLock的区别
查看>>
一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?
查看>>
MySQL之内连接、左连接和右连接
查看>>
RabbitMQ 相关问题总结--RabbitMQ 如何确保消息发送和消费?
查看>>
RabbitMQ 相关问题总结--RabbitMQ 如何确保消息发送和消费?
查看>>
Spring循环依赖及解决方式
查看>>
深入理解CAS机制
查看>>
Spring的启动流程
查看>>
判断单链表是否有环,并找出环的入口【python】
查看>>
在mybatis中#{}和${}的区别,使用场景及sql注入
查看>>
记录一次经历的数据库从单库到分库分表的过程
查看>>
mysql中count的理解与使用
查看>>
理解Java7和8里面HashMap+ConcurrentHashMap的扩容策略
查看>>
扒一扒ReentrantLock以及AQS实现原理
查看>>
浅析mysql的锁
查看>>
HTTP与HTTPS的区别
查看>>