Получение имени листа в office.js в офисных надстройках

Я пытаюсь получить SheetName из надстройки Office 365, созданной с использованием VS. ниже приведен код.

var ctx = new Excel.RequestContext();
        workbook = ctx.workbook;               
        var Sheet = workbook.worksheets.getActiveWorksheet();
        Sheet.load("name");
        var name;
        ctx.sync().then(function () {
            name = Sheet.name;
        });

но я не могу попасть внутрь функции ctx.sync().then. пожалуйста, объясните, если я что-то упустил.

Также можно загрузить файл Excel в существующую книгу, используя приведенный выше пример. под загрузкой файла я имею в виду, скажем, я получаю файл excel от службы, которую мне нужно показать в текущей книге. как и в надстройке клиента excel, мы можем загрузить файл excel в приложение


person Sandy    schedule 17.08.2017    source источник


Ответы (1)


Вот несколько рекомендаций:

  • Используйте Excel.run вместо создания контекста запроса вручную. (Помимо прочего, это поможет с обработкой ошибок.)
  • Убедитесь, что вы также включаете обработку ошибок (без надлежащей логики обработки ошибок что-то может незаметно выйти из строя без каких-либо признаков того, что что-то не работает).
  • Не забудьте включить return перед context.sync() (т. е. return context.sync();).

Вот фрагмент кода, который реализует эти рекомендации в контексте вашего сценария:

function getActiveWorksheet() {
    Excel.run(function (context) {
        var sheet = context.workbook.worksheets.getActiveWorksheet();
        sheet.load("name");
        return context.sync()
            .then(function () {
                console.log("The active worksheet is " + sheet.name);
            });
    })
        .catch(function (error) {
            console.log(error.debugInfo);
        });
}

Что касается вашего последнего вопроса («Возможно ли также загрузить файл Excel в существующую книгу, используя приведенный выше пример.») — мне не совсем понятно, о чем вы здесь спрашиваете. Не могли бы вы обновить свой вопрос, указав больше информации о том, чего вы хотите достичь?

person Kim Brandl    schedule 17.08.2017
comment
Ким Брэнди спасибо за ответ. под загрузкой файла я имею в виду, скажем, я получаю файл excel от службы, которую мне нужно показать в текущей книге. как и в клиентской надстройке Excel, мы можем загрузить файл Excel в приложение. - person Sandy; 18.08.2017
comment
@Sandy - Поскольку это совершенно другой вопрос (не связанный с получением имени листа), не могли бы вы создать новый пост здесь, в Stack Overflow, чтобы задать этот вопрос? Создавая по одному сообщению для каждого отдельного вопроса/темы, вы не только повышаете вероятность получения хороших отзывов, но и повышаете вероятность того, что другие смогут извлечь пользу из этой информации в будущем. Наконец, если мой ответ выше в достаточной степени касается основной части этого вопроса (получение имени листа в office.js в офисных надстройках), пожалуйста, отметьте его как принятый ответ (чтобы другие также могли воспользоваться этой информацией). Спасибо! - person Kim Brandl; 18.08.2017
comment
КИм Брэнди, ты прав.. Создаю для этого новый пост - person Sandy; 21.08.2017