我正在使用我的node.js express应用程序服务器导出xlsx.js生成的文件。我想知道如何在第一行加粗,设置自动宽度和(最终)颜色边框。 例如,工作表的第一行看起来像:
var data = [[
{value:"EXTREMELY LONG TITLE 1", bold: 1, autoWidth:true},
{value:"TITLE2"},
{value:"TITLE3"}
]];
我的实际结果是这三个单元格正确打印并提供服务。属性bold
和autoWidth
将被忽略。我怎样才能让它发挥作用?
答案 0 :(得分:1)
有很多模块可以做到这一点。但是如果你想控制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;
}
});
答案 1 :(得分:0)
您可以使用xlsx,js-xlsx或node-xlsx。创建一个格式化的模板,然后将数据插入其中。