这是实现好了的代码
const xlsx = require('xlsx');
const { readFile } = require('fs').promises;
const { writeFile } = require('fs').promises;
var doneStu = [4,8];
var notDoneStu = []
try {
fileName = 'test'
fileName = 'Excel/' + fileName + '.xlsx';
(async function (params) {
const excelBuffer = await readFile(fileName);
const wb = xlsx.read(excelBuffer, {
type: 'buffer',
cellHTML: false,
});
ws = wb.Sheets[wb.SheetNames[0]];
//确定范围
ws[xlsx.utils.encode_cell({ r: 0, c: 1 })] = { t: 's', v: '完成情况' };
const range = xlsx.utils.decode_range(ws['!ref']);
endR = range.e.r;
processedRange = 'A1:B' + (endR + 1);
ws['!ref'] = processedRange;
for (var i = 1; i <= endR; i++) {
if (ws[xlsx.utils.encode_cell({ r: i, c: 1 })] == undefined)
ws[xlsx.utils.encode_cell({ r: i, c: 1 })] = { t: 's', v: 'NotDone' };
}
for (var i in doneStu) {
// console.log(doneStu[i]);
cell = ws[xlsx.utils.encode_cell({ r: doneStu[i] - 1, c: 1 })];
cell.v = "已完成"
}
for (var i = 1; i <= endR; i++) {
cell = ws[xlsx.utils.encode_cell({ r: i, c: 1 })];
if (cell.v != "已完成" && doneStu.indexOf(i + 1) == -1) {
cell2 = ws[xlsx.utils.encode_cell({ r: i, c: 0 })];
notDoneStu.push(cell2.v);
}
}
console.log(notDoneStu);
ws2 = wb.Sheets[wb.SheetNames[1]];
ws2['!ref'] = processedRange;
ws2[xlsx.utils.encode_cell({ r: 0, c: 0 })] = { t: 's', v: '未完成的学生名字' };
for (var i = 1; i <= endR; i++)
ws2[xlsx.utils.encode_cell({ r: i, c: 0 })] = { t: 's', v: '' };
for (var j in notDoneStu) {
ws2[xlsx.utils.encode_cell({ r: parseInt(j) + 1, c: 0 })] = { t: 's', v: notDoneStu[j] };
}
xlsx.writeFile(wb, fileName)
})();
} catch (FileNotFound) {
console.log("文件名输入错误");
// return;
}
网友评论