我有一个模板 Excel 文件,我需要使用可读流将数据写入文件,然后将结果文件流回服务器响应以供下载。
到目前为止,这是我使用exceljs 得到的。但这不是“真正的”流式传输,因为工作簿在发送到响应之前已保存到内存中。
const path = require('path')
const Excel = require('exceljs')
const dao = require('./dao')
const stream = dao.getData().stream()
const workbook = new Excel.Workbook()
workbook.xlsx.readFile(path.join(__dirname, 'Template.xlsx'))
.then(() => {
const detailSheet = workbook.getWorksheet('Detail')
detailSheet.columns = colName.header.detail
stream.on('data', (d) => {
detailSheet.addRow(d).commit()
})
stream.on('end', () => {
workbook.xlsx.write(res)
})
})