如何为同一行中的不同单元格设置不同的字体颜色?
How to set different font color for different cell in the same row?
我正在使用 `exceljs 包来操作 xslx 文件。
这是我的代码。
async function doExport(){
monthlyCalendar={
"calendarDateList": [
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 1,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 2,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 3,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 4,
"dayOfWeek": 4,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 5,
"dayOfWeek": 5,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 6,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 7,
"dayOfWeek": 0,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 8,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 9,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 10,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 11,
"dayOfWeek": 4,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 12,
"dayOfWeek": 5,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 13,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 14,
"dayOfWeek": 0,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 15,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 16,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 17,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 18,
"dayOfWeek": 4,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 19,
"dayOfWeek": 5,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 20,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 21,
"dayOfWeek": 0,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 22,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 23,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 24,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 25,
"dayOfWeek": 4,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 26,
"dayOfWeek": 5,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 27,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 28,
"dayOfWeek": 0,
}
],
"noOfWorkingDay": 18
}
const ExcelJS = require('exceljs');
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile('./input.xlsx');
const worksheet1 = workbook.getWorksheet("Sheet1");
let weekdayNames=['Su','M','T','W','Th','F','S'];
let weekdayRow=worksheet1.getRow(5);
for (let i=0;i<this.monthlyCalendar.calendarDateList.length;i++){
let calendarDate=this.monthlyCalendar.calendarDateList[i];
weekdayRow.getCell(calendarDate.dateOfMonth+1).value=weekdayNames[calendarDate.dayOfWeek];
if ((calendarDate.dayOfWeek==6)||(calendarDate.publicHoliday)){
let address=weekdayRow.getCell(calendarDate.dateOfMonth+1).address;
console.log(weekdayRow.getCell(calendarDate.dateOfMonth+1).address);
worksheet1.getCell(address).font = {color:{argb: 'FFFF0000'}, name: "Times New Roman", size: 12};
break;
}
}
await workbook.xlsx.writeFile('./output.xlsx');
}
doExport()
.then(()=>{
console.log("Export Completed.")
})
.catch(error=>{
console.log("Something Wrong:"+error.stack);
})
我有一行代表一个月。行中的每个单元格代表一个日期。如果日期是星期六或 public 假期,则该单元格的内容将为红色,否则,该单元格的内容将为黑色。
但是,结果是该行的所有单元格内容都变成了红色,请问您能帮忙解决一下吗?
input.xlsx 可以从 here 下载。
最后我用Rich Text Value解决了问题
我正在使用 `exceljs 包来操作 xslx 文件。
这是我的代码。
async function doExport(){
monthlyCalendar={
"calendarDateList": [
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 1,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 2,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 3,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 4,
"dayOfWeek": 4,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 5,
"dayOfWeek": 5,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 6,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 7,
"dayOfWeek": 0,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 8,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 9,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 10,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 11,
"dayOfWeek": 4,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 12,
"dayOfWeek": 5,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 13,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 14,
"dayOfWeek": 0,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 15,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 16,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 17,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 18,
"dayOfWeek": 4,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 19,
"dayOfWeek": 5,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 20,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 21,
"dayOfWeek": 0,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 22,
"dayOfWeek": 1,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 23,
"dayOfWeek": 2,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 24,
"dayOfWeek": 3,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 25,
"dayOfWeek": 4,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 26,
"dayOfWeek": 5,
},
{
"publicHoliday": false,
"today": false,
"dateOfMonth": 27,
"dayOfWeek": 6,
},
{
"publicHoliday": true,
"today": false,
"dateOfMonth": 28,
"dayOfWeek": 0,
}
],
"noOfWorkingDay": 18
}
const ExcelJS = require('exceljs');
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile('./input.xlsx');
const worksheet1 = workbook.getWorksheet("Sheet1");
let weekdayNames=['Su','M','T','W','Th','F','S'];
let weekdayRow=worksheet1.getRow(5);
for (let i=0;i<this.monthlyCalendar.calendarDateList.length;i++){
let calendarDate=this.monthlyCalendar.calendarDateList[i];
weekdayRow.getCell(calendarDate.dateOfMonth+1).value=weekdayNames[calendarDate.dayOfWeek];
if ((calendarDate.dayOfWeek==6)||(calendarDate.publicHoliday)){
let address=weekdayRow.getCell(calendarDate.dateOfMonth+1).address;
console.log(weekdayRow.getCell(calendarDate.dateOfMonth+1).address);
worksheet1.getCell(address).font = {color:{argb: 'FFFF0000'}, name: "Times New Roman", size: 12};
break;
}
}
await workbook.xlsx.writeFile('./output.xlsx');
}
doExport()
.then(()=>{
console.log("Export Completed.")
})
.catch(error=>{
console.log("Something Wrong:"+error.stack);
})
我有一行代表一个月。行中的每个单元格代表一个日期。如果日期是星期六或 public 假期,则该单元格的内容将为红色,否则,该单元格的内容将为黑色。 但是,结果是该行的所有单元格内容都变成了红色,请问您能帮忙解决一下吗?
input.xlsx 可以从 here 下载。
最后我用Rich Text Value解决了问题