nodeJS 利用xlsx导出插件导出excel文件 (可以设置excel单元格颜色/宽度)

这篇博客介绍了如何使用NodeJS的xlsx模块导出Excel文件,并详细说明了如何设置单元格的颜色和宽度。通过示例代码展示了如何创建一个Workbook对象,定义工作表(ws),设置列宽(ws['!cols']),填充颜色和对齐方式,以及最终写入文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var XLSX = require('xlsx');

var _exports = {};
module.exports = _exports;

_exports.exportXls = function(data) {
    var ws = {
    	s:{
    		"!row" : [{wpx: 67}]
    	}
    };
    ws['!cols']= [];
    for(var n = 0; n != data[0].length; ++n){
    	ws['!cols'].push({
         wpx: 170
      });
    }
    var range = {
        s : {
            c : 10000000,
            r : 10000000,
        },
        e : {
            c : 0,
            r : 0
        }
    };
    for (var R = 0; R != data.length; ++R) {
        for (var C = 0; C != data[R].length; ++C) {
            if (range.s.r > R)
                range.s.r = R;
            if (range.s.c > C)
                range.s.c = C;
            if (range.e.r < R)
                range.e.r = R;
            if (range.e.c < C)
                range.e.c = C;
            var cell = {
                v : data[R][C],
			    s:{
			    	fill: { fgColor: { rgb: "33000000"}},
			    	alignment: {horizontal: "center" ,vertical: "center"},
				 }
            };
            if (cell.v == null)
                continue;
            var cell_ref = XLSX.utils.encode_cell({
                c : C,
                r : R
            });

            if ( typeof cell.v === 'number')
                cell.t = 'n';
            else if ( typeof cell.v === 'boolean')
                cell.t = 'b';
            else if (cell.v instanceof Date) {
                cell.t = 'n';
                cell.z = XLSX.SSF._table[14];
                cell.v = datenum(cell.v);
            } else
                cell.t = 's';
            if(R){
            	delete cell.s.fill;
            }
            ws[cell_ref] = cell;
        }
    }
    data.fileName = "sample.xlsx";
    var workbook = new Workbook();
    var wsName = data.fileName.split(".xlsx")[0];
    workbook.SheetNames.push(wsName);
    workbook.Sheets[wsName] = ws;
    if (range.s.c < 10000000)
        ws['!ref'] = XLSX.utils.encode_range(range);
    var wopts = {
        bookType : 'xlsx',
        bookSST : false,
        type : 'binary'
    };
    var wbout = XLSX.write(workbook, wopts);
    XLSX.writeFile(workbook, data.fileName);
    return wbout;
};

function Workbook() {
    if (!(this instanceof Workbook))
        return new Workbook();
    this.SheetNames = [];
    this.Sheets = {};
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值