您的位置:首页 > Web前端 > Node.js

nodejs利用csv导出文件

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

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

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
  

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  csv nodejs导出 excel