2

複数の機能を備えた分度器を実行しようとしています (差分バージョンで約 30 のブラウザー)。各実行後、xlsx 行は「USED」であることが更新されます。

私はExceljsを使ってフラグを書きます。ただし、別のプロセスによって既に使用されている/開かれている場合は、エラーがスローされます。私は例外を処理しましたが、失敗する代わりに、マルチプロセスが待機してファイルへのアクセスを再試行するようにします。

1 つの xlsx を複数のプロセスで同時に読み取り/書き込みする方法を提案してください。処理されたプロセスは、前のプロセスがアクセスを完了するまで待機する必要があります。

書き込み機能:

updateRunnerXLS: function(fileName) {
    var Excel = require('exceljs'); //Require the exceljs package
    var workbook = new Excel.Workbook(); //create a workbook reader
    workbook.xlsx.readFile(fileName)
    .then(function(workbook) {
        var rowValues = []; //initialize empty array
        var worksheet = workbook.getWorksheet('sheet2');
        var nameCol = worksheet.getColumn('M');
        nameCol.eachCell(function(cell, rowNumber) { //Loop through the cells
            if (cell.value == 'Y') { //get all rows with Y
                rowValues.push(rowNumber); //Fill the array with row number
            }
        });
         var row = worksheet.getRow(rowValues[0]); //Get the first row from the array
        row.getCell('M').value = 'X'; //update the first row that has a  Y to X
        row.commit(); //Commit the row change
        workbook.xlsx.writeFile(fileName).then(function() {
            //done
        }).catch(function (err) {
            console.log('Handled the error - ' + err);
        })
    })
}

関数の読み取り: (exceljs を使用した読み取りは簡単です)

var Parser = require('parse-xlsx');
sheet = new Parser(testDataFolder + 'dataSheet.xlsx', 'sheet2');
4

0 に答える 0