代码之家  ›  专栏  ›  技术社区  ›  shamon shamsudeen

节点js excel导出:下载文件不创建文件

  •  1
  • shamon shamsudeen  · 技术社区  · 6 年前

    我正在尝试在我的应用程序中使用 fast-csv

    这是出口的流程

    2) 准备并下载excel

    function export(req, res) {
      let path = "sample.csv";
    
      exportService.exportExcel(
        {
          path: path,
          data: data,
        },
        status => {
          res.download(path);
        },
      );
    }
    

    出口服务

    function exportExcel(params, callback) {
      csv.writeToPath(params.path, params.data, { headers: true }).on("finish", function() {
        console.log("done");
        callback(true);
      });
    }
    

    这种方法可以很好地工作,但是这种方法有一个缺点,下载前需要写入文件有没有办法避免这种临时写入或从文件夹下载后删除文件

    2 回复  |  直到 6 年前
        1
  •  0
  •   Pawan Singh    6 年前
    1. 第一种方式(不确定):: 只需将csv输出到资源发送内容处置标头设置为 ,它可以下载
    2. 第二种方式:
        2
  •  0
  •   Dat Tran    6 年前

    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()
    });