nodejs利用csv导出文件

小弟我才开始写博客,如果不合理之处请提出来,我改之,本文是关于nodejs中利用csv做文件的导出功能,在该例子中主要利用了fast-csv包对数据进行导出为csv文件格式,由于最近在做一个关于nodejs导出的excel的功能,在网上找了很久都没有找到合适的文档,最后找到了关于csv的导出,下面是关于nodejs代码

接下来的代码是关于csv导出的js,其中首先需要导包:fast-csvfs包;

var fs = require("fs");
var csv = require("fast-csv");
module.exports = {
    /**
     *
     * @param req:request
     * @param res:response
     * @param getTitle:获取excel的第一行名称
     * @param rows:每一行数据,用json数组表示
     * @param filezName:导出文件名
     */
    downLoad:function(req,res,getTitle,rows,fileName){
        //用于判断是否是最后一个数据信息
        var endLine = false;
        var stream = null;
        var argus = process.argv.splice(2);
        if(!argus || argus.length == 0){
            stream = fs.createWriteStream("D:/temp.csv");
        }else{
            stream = fs.createWriteStream(argus[0]);
        }
        stream.on("finish", function(){
            res.download('D:/temp.csv',fileName+'.csv',function(){
				fs.unlinkSync('D:/temp.csv'); //删除临时文件
			});

        });

        //生成头部
        var csvStream = csv.format({headers: true})
            .transform(getTitle);
        csvStream.pipe(stream);
        rows.forEach(function(row){
            csvStream.write(row);
        });

        //关闭写入
        csvStream.end(function(){
            console.log("end");
        });
    }
}

在最后附上调用该js文件的例子,该例子是写在router路由里面的,当页面点击导出的时候执行的代码,如下
var express = require('express');
var router = express.Router();
var fs = require("fs");
var downLoadUtil = require('../download');//这里引用
router.get('/exportCsv', function(req, res, next) {
    downLoadUtil.downLoad(req,res,function(row){
        return {"编号":row.id,"名称":row.name,"姓名":row.title};
    },[{id:1,name:'test',title:'title1'},{id:2,name:'test',title:'title2'},{id:3,name:'test',title:'title3'}],'testFile')
});

module.exports = router;
在上面的代码中function(row){return {"编号":row.id,"名称":row.name,"姓名":row.title}返回的是csv文件的第一行表头,[{id:1,name:'test',title:'title1'},{id:2,name:'test',title:'title2'}]表示输出在csv文件中的内容。
注意:上面颜色相同的部分名称一定要一样,而且rows是一个json数组;
csv输出文件内容格式如下:
编号名称姓名
1testtitle1
2testtitle2



  




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值