0

我正在使用模块exceljs创建一个 xlsx 工作簿,然后我想通过我的快速中间件将其作为附件发送。

我使用以下代码创建工作簿并将其保存在流中,如模块文档中所示

    var stream = fs.createWriteStream('test.xlsx');    
    // write to a stream
    workbook.xlsx.write(stream)
        .then(function() {
            // done
    }); 

其中流是可写流。

我的问题是我无法理解如何处理流以发送它。尝试将其通过管道传输到 res stream.pipe(res)会给我一个错误,即无法读取流来传输它。

现在对我来说最好的行动方案是什么?

ps 我可以将它保存到服务器中的文件中,然后读取文件并通过快递发送。这对我没有帮助,因为之后不需要附件,这是我不喜欢的解决方法。

4

2 回答 2

2

如果您有流,您可以执行以下操作以将其作为附件快速发送:

res.attachment('yourfile.xlsx'); stream.pipe(res);

于 2016-05-31T09:43:13.557 回答
0

您可以使用 Exceljs 的默认流式传输 XLSX Writer。

// construct a streaming XLSX workbook writer with styles and shared strings
var options = {
    stream: res // stream to server response
};
var workbook = new Excel.stream.xlsx.WorkbookWriter(options);

根据文档,构造函数采用带有以下字段的可选选项对象:

  • stream:指定将 XLSX 工作簿写入的可写流。
  • filename:如果未指定流,则此字段指定要写入 XLSX 工作簿的文件的路径。
于 2018-03-12T08:36:18.293 回答