因此我使用ExcelJS来创建Excel文件。目前我正在将文件保存到磁盘。我添加到文件的数据来自API调用。将ExcelJS的输出上传到NodeJS中的Azure Blob存储中
let options = {
filename: 'pathtofile',
useStyles: true,
useSharedStrings: true
}
let workbook = new Excel.stream.xlsx.WorkbookWriter(options)
let sheet = workbook.addWorksheet('myWorksheet')
// add some data to the file
sheet.commit()
workbook.commit()
我想现在更改它,以便它上传到Azure Blob存储。 ExcelJS允许指定stream
而不是filename
来承诺。所以我决定使用Memory Streams JS,所以现在选项看起来像这样。
let stream = new streams.WritableStream()
let options = {
stream: stream,
useStyles: true,
useSharedStrings: true
}
从阅读天青文件,这两个最合适的方法似乎是createBlockBlobFromStream()
和createWriteStreamToBlockBlob()
,他们似乎都希望有一个只读流(纠正我,如果我错了)。这是我卡住的地方,因为我有一个使用ExcelJS的可写入流,但是我需要一个用于Azure Blob存储的可读流。很明显,我仍然可以将文件写入磁盘;从文件创建一个可读流;然后在上传到Azure Blob存储后最后删除该文件,但这是很大的开销。我是以非常迂回的方式去谈论这个吗?