Идея состоит в том, чтобы создать действительный файл Excel и затем передать его.
Соблюдать последовательность вызовов для создания рабочей книги и записи в нее данных JSON. Возможно, вы захотите создать уникальные имена для разных файлов Excel, если вы хотите обработать несколько клиентских запросов и создать историю / журнал отправленных данных.
Вот полный рабочий пример (см. Встроенные комментарии):
const fs = require('fs');
const server = require('http').createServer();
const XLSX = require('xlsx');
server.on('request', (req, res) => {
const data = [
{id: '1', name: 'abc'},
{id: '2', name: 'xyz'}
];
const wb = XLSX.utils.book_new(); // create workbook
const ws = XLSX.utils.json_to_sheet(data); // convert data to sheet
XLSX.utils.book_append_sheet(wb, ws, 'users_sheet'); // add sheet to workbook
const filename = "users.xlsx";
const wb_opts = {bookType: 'xlsx', type: 'binary'}; // workbook options
XLSX.writeFile(wb, filename, wb_opts); // write workbook file
const stream = fs.createReadStream(filename); // create read stream
stream.pipe(res); // send to client
});
server.listen(8080);