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时是否可以更改单元格样式?我
以下是修改代码的方法:
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 文件中所有单元格的字体颜色为红色。