Перебор таблиц в Excel mac с использованием office js не работает

#excel #macos #ms-office #office-js

#excel #macos #ms-office #office-js

Вопрос:

Я пытаюсь перебирать таблицы в Excel с помощью office js

Вот пример кода (такой же, как в документах здесь https://github.com/OfficeDev/office-js-docs/blob/master/reference/excel/tablecollection.md ):

 Excel.run(function (ctx) { 
    var tables = ctx.workbook.tables;
    tables.load('items');
    return ctx.sync().then(function() {
        console.log("tables Count: "   tables.count);
        for (var i = 0; i < tables.items.length; i  )
        {
            console.log(tables.items[i].name);
        }
    });
}).catch(function(error) {
        console.log("Error: "   error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: "   JSON.stringify(error.debugInfo));
        }
});
 

Получите количество таблиц.

 Excel.run(function (ctx) { 
    var tables = ctx.workbook.tables;
    tables.load('count');
    return ctx.sync().then(function() {
        console.log(tables.count);
    });
}).catch(function(error) {
        console.log("Error: "   error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: "   JSON.stringify(error.debugInfo));
        }
});
 

Код корректно работает в Windows Excel 2016, но на Mac Excel 2016 оба примера кода выдают ошибку типа: «Общее исключение» и местоположение ошибки: «TableCollection.count»

Ответ №1:

Мы попытались повторить проблему, но не получили «Общее исключение». Мы получаем ошибку в первом примере «PropertyNotLoaded», хотя это понятно в том смысле, что образец немного некорректен, оператор загрузки должен быть tables.load('name, count') вместо tables.load('items') . Но это все равно не объясняет ошибку. И вторые образцы должны работать просто отлично.

Вы выполняете это в существующем документе? Есть ли что-то особенное в этом документе? Если бы вы запустили этот код для совершенно нового документа с парой таблиц в нем, сработал бы он тогда? Кроме того, какой номер версии у вашей версии Office для Mac?

Комментарии:

1. Я сталкиваюсь с аналогичной проблемой на клиенте Mac. Для новой книги

2. Для новой книги вызов var tables = ctx.workbook.tables; tables.load(); выдает ошибку вместо успешного возврата с tables.count = 0 и пустой коллекцией tables.items. Ошибка {"errorLocation":"TableCollection.count"} . В моем случае, когда я использую API для добавления таблиц, ошибка все равно возникает, даже если таблицы существуют. Единственный способ обойти это — сохранить книгу и снова открыть ее. Тогда код tables.load() работает нормально. Я вижу проблему только в новых книгах.

3. Версия Mac 15.30 (170107)

4. Позвольте мне попросить кого-нибудь попробовать и продолжить с вами.

5. Я также получаю эту ошибку на Mac, но только в том случае, если таблиц нет. Работает нормально, если таблицы существуют. Отлично работает в Windows. macOS 10.12.5. Excel 15.36 (170702).