Man*_*mar 12 csv export node.js export-to-csv
最近我开始使用node.js. 在我的一个项目中遇到一个要求时,我遇到了一个问题,我应该能够动态地将一些数据写入csv文件并让它作为弹出窗口提示为用户下载(带有保存和取消选项 - 正如我们通常的那样)看到).谷歌搜索了一段时间后,我决定使用csv npm模块https://github.com/wdavidw/node-csv-parser.我能够将数据写入文件并使用此模块保存.我想提示弹出一个用于保存此文件的/不保存文件.
我的代码看起来像这样:
// Sample Data
var data = [["id", "subject1", "subject2", "subject3"], ["jack", 85, 90, 68], ["sam", 77, 89, 69]]
// Server Side Code
var csv = require('../../node_modules/csv');
var fs = require('fs');
createCSV = function(data, callback) {
csv().from(data).to(fs.createWriteStream('D:/test.csv')) // writing to a file
}
// Client side call sample
$("#exportToCSV").click(function() {
callToServer.createCSV(data);
return false;
});
Run Code Online (Sandbox Code Playgroud)
就编写csv文件而言,这是有效的.
任何帮助是极大的赞赏.-谢谢
joe*_*wen 33
Manish Kumar的答案很明显 - 只是想包含一个Express 4语法变体来完成这个:
function(req, res) {
var csv = GET_CSV_DATA // Not including for example.
res.setHeader('Content-disposition', 'attachment; filename=testing.csv');
res.set('Content-Type', 'text/csv');
res.status(200).send(csv);
}
Run Code Online (Sandbox Code Playgroud)
Man*_*mar 15
我这样做了:
http.createServer(function(request, response) {
response.setHeader('Content-disposition', 'attachment; filename=testing.csv');
response.writeHead(200, {
'Content-Type': 'text/csv'
});
csv().from(data).to(response)
})
.listen(3000);
Run Code Online (Sandbox Code Playgroud)
Pal*_*ani 12
以下解决方案适用于Express
快速发展,而不是设置附件和内容类型标题,直接使用附件api http://expressjs.com/4x/api.html#res.attachment
注意:attachment()不传输文件,只是在头文件中设置文件名.
response.attachment('testing.csv');
csv().from(data).to(response);
Run Code Online (Sandbox Code Playgroud)