Ошибка сравнения данных между Excel и файлом JSON

#javascript #jasmine #protractor

#javascript #jasmine #транспортир

Вопрос:

У меня есть два файла, один в формате JSON, а другой в MS-Excel. Оба файла должны содержать идентичные данные, и я пытаюсь сравнить файлы. Я разработал приведенную ниже вспомогательную функцию, которая должна сделать свое дело. Но скрипты терпят неудачу, он не может найти ни одного совпадения. Один пример: в одном случае не удается сопоставить имена со следующим журналом :

Имя учащегося не соответствует: 993793117имя в Json: Юджин, Тобиас: и Имя в Excel: Юджин, Тобиас:

Имена идентичны и они идеально совпадают, если я скопирую имена из вышеупомянутой ошибки и сравню вручную. Как это можно решить?

 this.fileComparisonXlJson = async function (Jsonfile, Excel){


    let Datafile = Jsonfile;
    await browser.wait(async function(){
        return await fs.existsSync(Datafile);

    }, 30*1000, "File has not downloaded in 30 seconds");

    let rawdata = fs.readFileSync(await Datafile);
    let data = await JSON.parse(rawdata);


    let excelFile = await Excel;

    await browser.wait(async function(){
        return await fs.existsSync(excelFile);

    }, 30*1000, "File has not downloaded in 30 seconds");

    let WB = await Workbook.xlsx.readFile(await excelFile);
    let WS = await WB.getWorksheet(1);
    let RC = await WS.actualRowCount;

    let a = 0;
    for (j=0;j<(RC-1); j  ){
        jsonRecord = await data[j];
        for (i=2; i<RC 1; i  ){

            const StudentID = 'A' i;

            if (await Number(WS.getCell(StudentID))===await Number(jsonRecord['StudentID'])){
                 const StudentName = 'B' i;
                 const Grade = 'C' i;
                 const BaseSchool = 'D' i;
                 const RegTeacher = 'E' i;
                 const EsyStatus = 'F' i;
                 const EsySite = 'G' i;

                 if (await WS.getCell(StudentName) === await jsonRecord['Student Name'].trim()) {
                     a = a;
                 }else{
                     a = a  'n Student Name did not match for :'  jsonRecord['StudentID']   'Name in Json:'  await jsonRecord['Student Name'].trim()   ': amp; Name in Excel:' await WS.getCell(StudentName) ':' ;
                 }
                 if (await WS.getCell(Grade) === await jsonRecord['Grade']) {
                     a = a;
                 }else{
                     a = a  'n Grade did not match for :'  jsonRecord['StudentID'];
                 }
                 if (await WS.getCell(BaseSchool) === await jsonRecord['Base School']) {
                     a = a;
                 }else{
                     a = a  'n Base School did not match for :'  jsonRecord['StudentID'];
                 }
                 if (await WS.getCell(RegTeacher) === await jsonRecord['Registering Teacher']) {
                     a = a;
                 }else{
                     a = a  'n Reg Teacher did not match for :'  jsonRecord['StudentID'];
                 }
                 if (await WS.getCell(EsyStatus) === await jsonRecord['Esy Status']) {
                     a = a;
                 }else{
                     a = a  'n ESY Status did not match for :'  jsonRecord['StudentID'];
                 }
                 if (await WS.getCell(EsySite) === jsonRecord['Esy Site Assigned']) {
                     a = a;
                 }else{
                     a = a  'n ESY Site did not match for :'  jsonRecord['StudentID'];
                 }
             }else{

                 a = a  'n No Record found for the student  :'  jsonRecord['StudentID']   ' in the Excel file';
             }

        }

    }
return await a;
}
  

Комментарии:

1. попробуйте также добавить .trim() в конец ваших WS.getCell() методов. Могут быть скрытые пробелы

2. @Dublind Я получил следующую ошибку: (узел: 4700) Предупреждение о необработанном отказе: ошибка типа: WS.getCell (…).trim не является функцией

3. Можете ли вы попробовать WS.getCell(...).value вместо этого. Я не уверен точно, что возвращает getCell

4. Спасибо. это решило проблему