npm protractor xlsx file wait и повторите попытку
Я пытаюсь запустить транспортир с несколькими возможностями (около 30 браузеров с разными версиями). Лист данных - xlsx и один лист, который будет использован. После каждого запуска строка xlsx будет обновляться, чтобы она использовалась
Я использую exceljs, чтобы написать флаг. Но он выдает ошибку, если его уже использовал / открыл другой процесс. Я обработал исключение, но вместо сбоя я бы хотел, чтобы процессы muti подождали и повторили доступ к файлу.
Пожалуйста, предложите, как читать / записывать один 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');