簡體   English   中英

Node js excel導出:下載文件而不創建文件

[英]Node js excel export:Download file without creating a file

我正在嘗試使用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);
  });
}

效果很好,但是此方法有一個缺點,那就是需要在下載之前寫入文件,是否有任何方法可以避免這種臨時寫入或從文件夾下載后刪除文件

  1. First Way(不確定)::僅將res.send中的csv輸出,並將Content-Disposition標頭設置為“ attachment; filename = filename.csv” ,然后下載
  2. 第二種方式::您可以使用客戶端javascript將JSON轉換為csv。 然后,您可以使瀏覽器將該文件作為CSV下載

最快的方法是將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()
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM