我正在使用模块exceljs创建一个xlsx工作簿,然后我希望通过我的快速中间件将其作为附件发送。
我使用以下代码在流中创建并保存我的工作簿,如模块文档中所示
var stream = fs.createWriteStream('test.xlsx');
// write to a stream
workbook.xlsx.write(stream)
.then(function() {
// done
});
其中stream是可写流。
我的问题是我无法理解如何处理流以便发送它。
试图将它传递给res stream.pipe(res)
会给我一个错误,这个错误不是可读的流管道。
现在对我来说最好的行动方案是什么?
P.S。我可以将它保存到服务器的文件中,然后读取文件并通过express发送。这对我没有帮助,因为之后不需要附件,这是我不喜欢的解决方法。
答案 0 :(得分:1)
如果您有流,则可以执行以下操作,将其作为附件发送至快递:
res.attachment('yourfile.xlsx');
stream.pipe(res);
答案 1 :(得分: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);
根据the document,构造函数使用带有以下字段的可选选项对象:
stream
:指定要写入XLSX工作簿的可写流。filename
:如果未指定stream,则此字段指定a的路径
用于将XLSX工作簿写入的文件。