如何在node.js中对xlsx文件进行样式设置

4

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

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

我的实际结果是这三个单元格都被正确地打印和提供。属性 boldautoWidth 被忽略了。我该如何解决这个问题?


不确定是否有操作顺序,但在他的测试案例中,看起来他将粗体放在值之前。也可以尝试使用单引号...我只是随便提出一些想法,我以前从未使用过这个。还有一个很棒的名字。 - Bryce Easley
@Thunda 哈哈,你的也是。我刚试了一下...不幸的是没有成功。无论如何还是谢谢你。 - Fra H
2个回答

2

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

0
你可以使用xlsx、js-xlsx或node-xlsx。创建一个格式化的模板,然后将数据插入其中。 这可能会有所帮助

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。 - Paritosh
我不觉得引用别人的问题解决方案是正确的。那几乎是我遇到的唯一的模板注入解决方案。我一直在使用nodejs构建自己的解决方案来样式化xlsx,但它还远未发布。data4node - TRex22

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接