我正在使用Exceljs动态地创建Excel数据。
我希望将其缓存在内存中,然后使用Koa将其发送给用户。
Exceljs的write
方法需要一个可写流:
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文件也不会打开。
那么我该如何将可写流转换为可读流呢?