Поделиться через


Устранение неполадок надстроек Excel

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

Ограничения API при переключениях активной книги

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

Этот параметр книги влияет на следующие API.

API JavaScript для Excel Возникла ошибка
Chart.activate GeneralException
Range.select GeneralException
Table.clearFilters GeneralException
Workbook.getActiveCell InvalidSelection
Workbook.getSelectedRange InvalidSelection
Workbook.getSelectedRanges InvalidSelection
Worksheet.activate GeneralException
Worksheet.delete InvalidSelection
Worksheet.gridlines GeneralException
Worksheet.showHeadings GeneralException
WorksheetCollection.add GeneralException
WorksheetFreezePanes.freezeAt GeneralException
WorksheetFreezePanes.freezeColumns GeneralException
WorksheetFreezePanes.freezeRows GeneralException
WorksheetFreezePanes.getLocationOrNullObject GeneralException
WorksheetFreezePanes.unfreeze GeneralException

Примечание.

Это относится только к нескольким книгам Excel, открытым в Windows или Mac.

Совместное редактирование

Шаблоны для использования с событиями в среде совместного редактирования см. в статье Совместная работа в надстройках Excel. В этой статье также рассматриваются потенциальные конфликты слияния при использовании определенных API, таких как TableRowCollection.add.

Известные проблемы

События привязки возвращают временные Binding объекты

Как BindingDataChangedEventArgs.binding, так и BindingSelectionChangedEventArgs.binding возвращают временный Binding объект, содержащий идентификатор Binding объекта, вызвавшей событие. Используйте этот идентификатор с BindingCollection.getItem(id) , чтобы получить Binding объект, который вызвал событие.

В следующем примере кода показано, как использовать этот временный идентификатор привязки для получения связанного Binding объекта. В примере прослушиватель событий назначается привязке. Прослушиватель вызывает метод при getBindingId активации onDataChanged события. Метод getBindingId использует идентификатор временного Binding объекта для получения Binding объекта, вызвавщего событие.

async function run() {
    await Excel.run(async (context) => {
        // Retrieve your binding.
        let binding = context.workbook.bindings.getItemAt(0);
    
        await context.sync();
    
        // Register an event listener to detect changes to your binding
        // and then trigger the `getBindingId` method when the data changes. 
        binding.onDataChanged.add(getBindingId);
        await context.sync();
    });
}

async function getBindingId(eventArgs) {
    await Excel.run(async (context) => {
        // Get the temporary binding object and load its ID. 
        let tempBindingObject = eventArgs.binding;
        tempBindingObject.load("id");

        // Use the temporary binding object's ID to retrieve the original binding object. 
        let originalBindingObject = context.workbook.bindings.getItem(tempBindingObject.id);

        // You now have the binding object that raised the event: `originalBindingObject`. 
    });
}

Формат useStandardHeight ячейки и useStandardWidth проблемы

Свойство CellPropertiesFormatuseStandardHeight не работает должным образом в Excel в Интернете. Из-за проблемы в пользовательском интерфейсе Excel в Интернете установка useStandardHeight свойства в значение true некорректно вычисляет высоту на этой платформе. Например, стандартная высота 14 изменяется на 14,25 в Excel в Интернете.

На всех платформах свойства CellPropertiesFormatuseStandardHeight и useStandardWidth имеют только значение true. Установка этих свойств на значение false не оказывает влияния.

Метод Range getImage не поддерживается на Excel для Mac

Метод Range getImage в настоящее время не поддерживается в Excel для Mac. Сведения о текущем состоянии см. в статье OfficeDev/office-js Issue No 235 .

Диапазон возвращаемых символов

Методы Worksheet.getRange(address) и Worksheet.getRanges(address) имеют ограничение строки адреса в 8192 символа. При превышении этого ограничения адресная строка усекается до 8192 символов.

Дополнительные материалы