#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).