テンプレートの 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)
})
})