有很多模块可以做到这一点。但是,如果您想控制xlsx文件的格式,则建议使用以下代码。行包含以JSON数组形式表示的数据。
var excel = require('node-excel-export');
var styles = {
headerDark: {
fill: {
fgColor: {
rgb: 'FF000000'
}
},
font: {
color: {
rgb: 'FFFFFFFF'
},
sz: 14,
bold: true,
underline: true
}
},
cellPink: {
fill: {
fgColor: {
rgb: 'FFFFCCFF'
}
}
},
cellGreen: {
fill: {
fgColor: {
rgb: 'FF00FF00'
}
}
}
};
var specification = {
"Col1": {
"displayName": 'Col1Name',
"headerStyle": styles.headerDark,
"width": 250
},
"Col2": {
"displayName": 'Col2Name',
"headerStyle": styles.headerDark,
"width": 215
},
"Col3": {
displayName: 'Col3Name',
headerStyle: styles.headerDark,
width: 150
}
}
var report = excel.buildExport(
[{
name: 'Report.xlsx',
specification: specification,
data: rows
}]
);
这可以作为API响应发送:
res.setHeader('Content-disposition', 'attachment; filename=Report.xlsx');
res.send(report);
或者作为电子邮件附件:
var smtpTransport = require('nodemailer-smtp-transport');
var transporter = nodemailer.createTransport(smtpTransport({
host: "mail.yourmailman.com"
}));
transporter.sendMail({
from: "abc.gmail.com",
to: toAddr,
subject: 'scheduled reporting',
attachments: [{
'filename': 'Report.xlsx',
'content': new Buffer(report, 'base64')
}]
}, function(error, success) {
if (error) {
logger.error('Error wile sending mail ', error);
return;
} else {
logger.info('Mail sent.. ', success);
return;
}
});