node+ejsexcel导出xlsx文件的简单demo

node+ejsexcel导出xlsx文件的简单demo

项目要增加一个生成报表的功能,只是一个前端小白,不会做。那就各种查,看见几位大佬分享的内容,帮助很大,记录一下,自己也当做个笔记
一开始我是用 参照 https://www.cnblogs.com/cyfhykx/p/9121176.html 这位大佬调用excel-export库的方法,不过这个导出的时候只能用get请求,如果用post请求的话是只返回一些乱码的(我是做完才发现= ),如果你是get请求方法的话,可以参照这位大佬的方法比较快就可以做出来。

后来我使用的ejsexcel,国内一位牛人开发的,一开始我还是有点懵的,没有想到代码还可以在.xlsx的文件里面写.后来了解到要先写模板,然后通过ejsexcel导入数据。 ejsexcel 这是github项目的地址,模板这里还是要多看看的。
在这里插入图片描述
下面是我写的简单demo
在这里插入图片描述
我的数据格式在下面代码里
模板和数据有啦,就可以进行下一步啦
下面贴代码

			var exceltt=require("./exceltt.js")                 
			var fs = require("fs");
			var qs = require('querystring');
   				data=[        //数据源
                        {"id":"1","dev":"徒骇河区","num":"50"},
                        {"id":"2","dev":"齐水河区","num":"60"},
                        {"id":"3","dev":"商水河区","num":"70"},
                        {"id":"4","dev":"巨野河区","num":"80"}
                    ]
                    let fliepath = "地址统计表格式"  //模板表名称
                    let fliename = "地址统计表.xlsx" //表下载时的名称
                    exceltt.excelta(fliepath, {list:data},function(path){   //请求另一个node模块的文件进行数据渲染
                        res.send({name: fliename, path: path})  //给前端返回渲染好的文件地址和文件名,“get”请求一下就可以在浏览器下载
                    })

请求的exceltt.文件代码

var fs = require("fs");
var ejsExcel = require("ejsexcel");

   var excelta = function (file, data, cb) {
    //获取Excel模板的buffer对象
    var exlBuf = fs.readFileSync("./excelTemplate/" + file + ".xlsx");
    var path = Date.now() + ".xls"; //临时文件名
    //用数据源(对象)data渲染Excel模板
    ejsExcel.renderExcel(exlBuf, data).then(function (exlBuf2) {
        //将数据方进模板开始渲染
        fs.writeFileSync("./download/" + path, exlBuf2); 
        cb(path)
    }).catch(function (err) {
        console.error(err);
    });
}

module.exports = {
    excelta: excelta    //导出
};

最后导出结果
在这里插入图片描述
参考链接https://segmentfault.com/a/1190000012992783

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值