将样式应用于SheetJs中的单元格

问题描述 投票:0回答:1
我正在尝试在写入事件期间更改 SheetJs 中单元格的字体颜色。我想将所有单元格的字体颜色从黑色更改为红色。下面是我在节点中执行sheetjs写入事件的方式。

var data = [[1,2,3],[true, false, 'rahul'],["foo","bar","0.3"], ["baz", 'abhi', "qux"]] var ws_name = "SheetJS"; var XLSX = require('xlsx') var wb = {} wb.Sheets = {}; wb.Props = {}; wb.SSF = {}; wb.SheetNames = []; var ws = {} var range = {s: {c:0, r:0}, e: {c:0, r:0 }}; for(var R = 0; R != data.length; ++R) { if(range.e.r < R) range.e.r = R; for(var C = 0; C != data[R].length; ++C) { if(range.e.c < C) range.e.c = C; var cell = { v: data[R][C] }; 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 cell.t = 's'; cell.s= { font: { color: { rgb: "FFC6EFCE" } } ws[cell_ref] = cell; } } ws['!ref'] = XLSX.utils.encode_range(range); wb.SheetNames.push(ws_name); wb.Sheets[ws_name] = ws; XLSX.writeFile(wb, 'test.xlsx');

Excel文件已创建,但样式未应用。我做错了什么吗?我应该添加任何包来获取单元格样式吗?请帮助使用SheetJs时是否可以更改单元格样式?我

javascript excel xlsx
1个回答
0
投票
在您的代码中,您尝试使用 cell.s.font.color 属性设置单元格的字体颜色。但是,SheetJS 并不直接支持样式定义中字体对象下的颜色属性。相反,您需要使用填充对象下的 fgColor 属性来设置字体颜色。

以下是修改代码的方法:

var XLSX = require('xlsx'); var data = [ [1, 2, 3], [true, false, 'rahul'], ['foo', 'bar', '0.3'], ['baz', 'abhi', 'qux'] ]; var ws_name = 'SheetJS'; var wb = {}; wb.Sheets = {}; wb.Props = {}; wb.SSF = {}; wb.SheetNames = []; var ws = {}; var range = { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } }; for (var R = 0; R != data.length; ++R) { if (range.e.r < R) range.e.r = R; for (var C = 0; C != data[R].length; ++C) { if (range.e.c < C) range.e.c = C; var cell = { v: data[R][C] }; 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 cell.t = 's'; // Create or modify style object for the cell cell.s = cell.s || {}; cell.s.fill = { fgColor: { rgb: 'FFC6EFCE' } // Set font color to red }; ws[cell_ref] = cell; } } ws['!ref'] = XLSX.utils.encode_range(range); wb.SheetNames.push(ws_name); wb.Sheets[ws_name] = ws; XLSX.writeFile(wb, 'test.xlsx');
在此修改后的代码中,我已将填充对象添加到 cell.s(样式)定义中,并在填充下设置 fgColor 来指定字体颜色。这将使生成的 Excel 文件中所有单元格的字体颜色为红色。

© www.soinside.com 2019 - 2024. All rights reserved.