В нашем приложении Excel создается с использованием модуля «Excel-Export» в одном API.
var nodeExcel = require('excel-export');
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.openxmlformates');
res.setHeader("Content-Disposition", "attachment;filename="+ "abcd.xlsx");
res.end(result, 'binary');
Я использую этот API в другом API, где этот файл Excel должен быть отправлен по почте в виде вложения. Мы используем REST API Sendgrid v3 для отправки почты.
var file = fs.createWriteStream('abc.xlsx');
var options1 = { method: 'GET',
url: <api url>,
encoding: 'binary'
};
request(options1, function (error, response, body) {
if (error) throw new Error(error);
response.pipe(file);
var avi = JSON.stringify(file);
var buff = new Buffer.from(avi).toString('base64');
var options = { method: 'POST',
url: 'https://api.sendgrid.com/v3/mail/send',
headers:
{ 'content-type': 'application/json',
'authorization': <####> },
body:
{ personalizations:
[ { to: <####>,
subject: <#####> ],
from: <####>,
content: <####>,
attachments: [ { content: buff, filename: 'abc.xlsx' } ] },
json: true };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
});
Письмо отправляется, но когда я пытаюсь открыть Excel, выдается ошибка, что файл поврежден. Куда я иду не так?