1. Вы должны использовать writeFile
вместо writeBuffer
workbook.xlsx.writeFile(excelFilePath);
(Источник: https://github.com/exceljs/exceljs#writing -xlsx )
2. xlsx-renderer
Я бы также рекомендовал использовать xlsx-renderer
, который обеспечивает создание файлов Excel на основе Template и ViewModel.
Template + ViewModel = Preaty XLSX
Template :
VM:
{
"projects": [
{
"name": "ExcelJS",
"role": "maintainer",
"platform": "github",
"link": "https://github.com/exceljs/exceljs",
"stars": 5300,
"forks": 682
},
{
"name": "xlsx-import",
"role": "owner",
"platform": "github",
"link": "https://github.com/siemienik/xlsx-import",
...
Дает:
Эта библиотека будет отлично работать с вашим кодом, поскольку она также основана на Excel Js.
(Источник: https://github.com/Siemienik/xlsx-renderer/tree/master/tests/integration/data/Renderer009-ForEach-Average)
РЕДАКТИРОВАТЬ: (29.04.2020) На практике используется следующий код:
const result = await renderer.renderFromFile('./report-template.xlsx', { awesome:"Oh yeah!", items:[/*...*/]});
await result.xlsx.writeFile('./my-awesome-report.xlsx');