Как я могу добавить данные в мою таблицу Excel с помощью node.js - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь добавить данные в свою таблицу Excel, но они перезаписываются, когда я пытаюсь использовать skipHeader: false, а когда я пытаюсь использовать skipHeader: true, тогда заголовок тоже добавляется. Я хочу, чтобы заголовок пришел только один раз. Мои заголовки должны быть ключевыми значениями ticketNameArr.push . Я хочу, чтобы данные добавлялись каждый раз, когда обещание выполнено без перезаписи предыдущих данных.

 var ftp;
    for (let i = 0; i < dataJson1.length; i++) {

        dir = dataJson1[i]['FTP DIR'];
        subfolder = dataJson1[i]['Sub Folder'];
        ftpPath = dir + subfolder;
        host = dataJson1[i]['FTP IP'];
        user = dataJson1[i]['FTP Username'];
        password = dataJson1[i]['FTP Password'];
        ticketStatus = dataJson1[i]['Status']
        console.log("FTP LOCATION:" + ftpPath + "\n" + "HOSTNAME:" + host + "\n" + "USERNAME:" + user + "\n" + "PASSWORD:" + password + "\n")
        //Reading the list of directories present in the FTP location
        console.log("value of i" + i);
        ///////////
        if (ticketStatus == true) {
            if (!ftp) {
                ftp = new PromiseFtp();
            }
            const ftpPromise = ftp.connect({
                host: host, user: user,
                password: password
            }).then(function (serverMessage) {
                console.log('Server message: ' + serverMessage)
                //console.log("value of i" + i)

                return ftp.list(ftpPath);

            }).then(function (list) {
                console.log('Directory listing:');

                var dirList = (list)
                console.log(dirList)

                console.log("Number of directories:" + dirList.length)


                var jsondirString = JSON.stringify(dirList)
                var datadirJson1 = JSON.parse(jsondirString)
                for (var j = 0; j < dirList.length; j++) {

                    //console.log(datadirJson1[j]['name'])
                    ticketName.push(datadirJson1[j]['name'])
                    //console.log(ftpTime)
                    ftpTime.push(datadirJson1[j]['date'])
                }
                return ftp.end();
            });
            promises.push(ftpPromise)
        }//status check ends

    }//Loop ends here
    Promise.all(promises).then(arrayOfResults => {

        console.log(ticketName);
        var ticketNameArr = [];


        for (let i = 0; i < ticketName.length; i++) {

            let ticketNameIs = ticketName[i];
            let ftpTimeIs = ftpTime[i]



            let ticketDetail = ticketApp(ticketNameIs, ftpTimeIs);

            Promise.all(ticketDetail).then(function (values) {
                //console.log(values);
                ticketNameArr.push({
                    // FtpTime: values[0].ftpTime,
                    Date: values[0].ftpTime,
                    TicketName: ticketNameIs,
                    //Add Dynamic folder column----
                    // InputLocationMessage: values[0].inputLocationMessage,
                    // ResultLocationMessage: values[1].resultLocationMessage,
                    // TicketStatusInput: values[0].ticketStatusInput,
                    In_Input_Location: values[0].ticketStatusInput,
                    // InputModifiedTime: values[0].mtime,
                    Input_Time: values[0].mtime,
                    // InputTime: values[0].birthtime,
                    // TicketStatusResult: values[1].ticketStatusResult,
                    In_Result_Location: values[1].ticketStatusResult,
                    // OutputModifiedTime: values[1].mtime,
                    Result_Time: values[1].mtime,
                    // OutputTime: values[1].birthtime,

                    //Add column for comment
                    //Add Coulm for Status

                    //Will help in preparing comments
                    CallAPi: values[3].apiStatus,
                    ReportStatus: values[3].reportStatus,
                    Comment: values[4].Comment,
                    Status: values[5].ticketStatus

                    // FTPSTATUS: values[0].FTPStatus,
                    // LogStatus: values[2].logStatus,
                    // LogCreateTime: values[2].birthtime,
                    // LogModifiedTime: values[2].mtime,


                });


                if (ticketNameArr.length == ticketName.length) {

                    // console.log("-------------TicketNameArr")
                    // console.log(ticketNameArr)
                    // ticketXLXSCopy = ticketXLXSCopy.concat(ticketNameArr)
                    // console.log("-------------In  Excel")
                    // console.log(ticketXLXSCopy)
                    // var ws = XLSX.utils.json_to_sheet(ticketXLXSCopy)


                    ws = XLSX.utils.sheet_add_json(ws, ticketNameArr, { origin: 0 });
                    XLSX.utils.sheet_add_json(ws, ticketNameArr, { skipHeader: false },
                        { origin: -1 });

                    /* Write data starting at A2 */

                    XLSX.utils.book_append_sheet(wb, ws) // sheetAName is name of Worksheet

                    XLSX.writeFile(wb, 'DailyTicketSatus.xlsx')




                    // respond.render('result', { "ticketNameArr": ticketNameArr });
                    respond.render('index', { "ticketNameArr": ticketNameArr });




                }


            });

        }


    })

...