LQ博客 www.lqblogs.com
arrows
nav

node-xlsx 实现EXCEL文件下载

作者:lq 来源:原创 发布时间:2019-09-04 浏览量:3976 评论:0 点赞:3

大多数项目中,我们都会遇到需要实现文件下载的需求,比如财务汇总,数据报表等等,这里我就给大家介绍下,如何通过node-xlsx 实现EXCEL文件下载。

npm install node-xlsx --save-dev //生成EXCEL
npm install moment --save-dev //格式化时间

废话少说,直接撸代码:

示例梳理:首先,从数据库拉取要导出的数据,清理以前的导出数据(保持磁盘干净),然后整理数据生成EXCEL工作表并创建文件名和存放路径,最终写入EXCEL文件。

excelExport: async (ctx, next) => {
        //拉取数据库数据
        var rows = await mysql.query("select * from t_article order by id desc");
        //每次生成EXCEL文件的时候删除以前生成的文件
        var folder_exists = fs.existsSync('./public/upload/excel');
        if(folder_exists == true)
        {
            var dirList = fs.readdirSync('./public/upload/excel');

            dirList.forEach(function(fileName)
            {
                fs.unlinkSync('./public/upload/excel/' + fileName);
            });
        }
        var data = [['文章分类', '标题','关键字','描述', '标记', '文章内容', '来源', '作者']]; 
        for(let item of rows){
            data.push([item.category_name, item.title, item.keyword, item.description, item.tag, item.content, item.source, item.author]);
        }
        var buffer = xlsx.build([{name: "smycms-article", data: data}]);//生成EXCEL工作表
        var fileName = 'all_article_'+ moment(new Date).format("YYYYMMDDHHmmss") +'.xlsx';//创建文件名
        var filePath = './public/upload/excel/'+fileName;
        fs.writeFileSync(filePath, buffer, 'binary');//写入EXCEL文件
        ctx.body = {
            msg: "导出成功",
            filename: fileName,
        };
    },

前端下载:

我这里返回的文件名,直接通过 window.open("文件夹路径+文件名") 或 location.href = "文件夹路径+文件名 " ,就可以直接下载

node-xlsx
如果你感觉本文章对你有帮助的话,那就点赞、打赏或订阅一下吧
点赞(3)
打赏
倒踩(0)
关闭 感谢您的支持,我会继续努力
微信支付
支付宝支付
扫码打赏,建议金额1-20元
浏览量(3976)
讨论本篇文章(0)
发表评论

最多访问文章

最新文章