Как я могу улучшить эту функцию, чтобы она перезаписывала ячейку Excel? - PullRequest
0 голосов
/ 28 августа 2018

Я использую этот код, чтобы попытаться перезаписать ячейку в Excel:

function readExcelFile(workbook, row, cell, newData) {
    workbook.xlsx.readFile('H://filename.xlsm')
        .then(function () {
            cell.value = newData;
            row.commit();
            return workbook.xlsx.writeFile('H://newFile.xlsx');
        });
}

Я могу записать данные в консоль, но файл Excel остается прежним.

Любая помощь была бы отличной, спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

Предположительно, параметры функции row и cell относятся к объектам, связанным с workbook? Однако они потеряют это соединение в рамках анонимной функции, в которой вы пишете файл. (Технически говоря, JavaScript передает переменные в функции по значению, а не по ссылке.)

Вместо этого передайте информацию, необходимую для поиска ячейки, и получите ее локально в функции:

function readExcelFile(workbook, worksheetName, rowIndex, columnIndex, newData) {
    workbook.xlsx.readFile('H://filename.xlsm')
        .then(function () {
            worksheet = workbook.getWorksheet(worksheetName);
            row = worksheet.getRow(rowIndex);
            cell = row.getCell(columnIndex);
            cell.value = newData;
            row.commit();
            return workbook.xlsx.writeFile('H://newFile.xlsx');
        });
}

readExcelFile(my_workbook, "My Worksheet", 3, 3, 34232);
...