我正在使用Exceljs快速创建Excel数据
我想将此内容缓冲在内存中,然后使用Koa将其发送给用户。
Exceljs的write
方法需要一个writableStream:workbook.xlsx.write(writableStream, options)
但是Koa期望可读的流:response.body = readableStream
我知道我可以将可读流传输到可写流中,但是我该如何做相反呢?我希望Exceljs写入可写流,并让Koa从同一流中读取。我对流API感到非常沮丧!
在其他20件事中,我尝试了以下操作:
const ReadableStream = require("memory-streams").ReadableStream
const reader = new ReadableStream()
const writer = new stream.Writable({
write: function(chunk, encoding, next) {
console.log(chunk.toString())
// reader.push(chunk, encoding)
next()
}
})
const reader = new MemoryStream(null, {readable: true})
// reader.write = reader.unshift
const writer = reader
workbook.xlsx.write(writer, {})
return reader
但这是行不通的,我收到一些关于无法写入已关闭流的奇怪错误。但是,即使我处理了该错误,我的Excel文件也不会打开。
那么如何从可写流中生成可读流呢?
最佳答案
您需要一个转换流。它既可读又可写。
stream = new require('stream').Transform()
stream._transform = function (chunk,encoding,done)
{
this.push(chunk)
done()
}
关于node.js - 如何从可写流制作可读流? (Node.js),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35564182/