我正在尝试使用fast-csv
在我的应用程序中实现excel导出。
这是出口流程
1)从数据库中获取数据。
2)准备并下载excel
function export(req, res) {
let path = "sample.csv";
exportService.exportExcel(
{
path: path,
data: data,
},
status => {
res.download(path);
},
);
}
ExportService
function exportExcel(params, callback) {
csv.writeToPath(params.path, params.data, { headers: true }).on("finish", function() {
console.log("done");
callback(true);
});
}
这很好用,但是此方法有一个缺点,那就是需要在下载之前写入文件,有什么方法可以避免这种临时写入或从文件夹下载后删除文件
答案 0 :(得分:0)
答案 1 :(得分:0)
最快的方法是将csvWriteStream通过管道传输到res。
function(req, res) {
res.setHeader('Content-Type', 'text/csv');
var data = [
{a: "a1", b: "b1"},
{a: "a2", b: "b2"}
];
var csvStream = csv.createWriteStream({headers: true})
.transform(function(row, next){
setImmediate(function(){
next(null, {A: row.a, B: row.b});
});
})
csvStream.pipe(res)
data.map(function(row) { csvStream.write(row) })
csvStream.end()
});