Триггерный расчет в JavaScript API для Excel

Я пытаюсь использовать JavaScript API для Excel.

Кто-нибудь знает, как запустить расчет для ячейки, диапазона, рабочего листа или рабочей книги?

Например, следующий код выбирает диапазон, но как мы можем пересчитать диапазон?

Excel.run(function (ctx) {
    var sheetName = "Sheet1";
    var rangeAddress = "F5:F10"; 
    var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
    range.select();
    return ctx.sync(); 
    });
}).catch(function(error) {
        console.log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: " + JSON.stringify(error.debugInfo));
        }
});

1 ответ

Решение

Вы можете пересчитать рабочую книгу, которая должна выполнить ваш сценарий. Для JS API это на уровне приложения:

Excel.run(function (ctx) { 
    ctx.workbook.application.calculate('Full');
    return ctx.sync(); 
}).catch(function(error) {
    console.log("Error: " + error);
    if (error instanceof OfficeExtension.Error) {
        console.log("Debug info: " + JSON.stringify(error.debugInfo));
    }
});

При этом, если ваша рабочая книга не находится в режиме ручного расчета, вам не нужно вызывать пересчет. Все зависимые ячейки должны обновляться автоматически.

Больше информации об API здесь: https://github.com/OfficeDev/office-js-docs/blob/master/excel/resources/application.md#calculatecalculationtype-string

Надеюсь это поможет!

~ Михаил Златковский, разработчик команды Office Extensibility, MSFT

Другие вопросы по тегам