javascript - 如何在 node.js 中设置 xlsx 文件的样式

标签 javascript excel node.js express xlsx

我正在使用我的 node.js Express 应用程序服务器导出由 xlsx.js 生成的文件。我想知道如何在第一行加粗,设置自动宽度和(最终)颜色边框。 例如,工作表的第一行如下所示:

var data = [[
        {value:"EXTREMELY LONG TITLE 1", bold: 1, autoWidth:true},
        {value:"TITLE2"},
        {value:"TITLE3"}
    ]];

我的实际结果是这三个单元格被正确打印和提供。属性 boldautoWidth 被忽略。我怎样才能让它发挥作用?

最佳答案

有很多模块可以做到。但是如果你想控制 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;
    }
});

关于javascript - 如何在 node.js 中设置 xlsx 文件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335057/

相关文章:

node.js - Loopback Pass用户为空

javascript - jQuery - 检查元素在显示之前是否隐藏或只是显示?

javascript - 如何在单个函数中调整 JavaScript 事件的顺序?

Javascript根据层次结构获取节点内部文本

vba - Excel图表VBA循环数据标签

javascript - express csurf(csrf 中间件)不能在 angularjs 中使用 XSRF

javascript - JavaScript 中的安全 API

Excel 控件事件在应用程序关闭时触发

excel - 如何从excel中的日期中减去工作日数

node.js - 在 nodejs 中的内部连接表之后,Sequelize ORM 返回一个奇怪的响应