美文网首页
js-xlsx处理Excel做统计程序

js-xlsx处理Excel做统计程序

作者: AndyDennisRob | 来源:发表于2020-03-12 17:27 被阅读0次

这是实现好了的代码

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;
}

相关文章

网友评论

      本文标题:js-xlsx处理Excel做统计程序

      本文链接:https://www.haomeiwen.com/subject/zqzmjhtx.html