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


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

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

Все выбранные диапазоны не распознаются

При выборе неконтигентных элементов API Word работает только с последним смежным диапазоном в выделенном фрагменте. Непредвиденный случай заключается в том, что при выборе столбца в таблице и вызове, например Document.getSelection, API возвращает только конечную ячейку в выделенном фрагменте. Хотя выбор столбца кажется непрерывным, API распознает его как неконтигентное выделение (например, ячейка на строку).

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

Метод Body.insertFileFromBase64 исключает все колонтитулы, которые находились в исходном файле.

Чтобы включить любые колонтитулы из исходного файла, используйте вместо него Document.insertFileFromBase64 .

Получение generalException при работе со стилями

Если при вызове надстройкой Document.insertFileFromBase64 или API style пользователи получают исключение GeneralException, возможно, эти пользователи превышают ограничения, установленные Word приложением. Дополнительные сведения об этих ограничениях см. в статье Ограничения и спецификации операционных параметров в Word.

Разрывы макета при использовании insertHtml курсора в элементе управления содержимым в заголовке

Эта проблема может возникнуть при выполнении следующих трех условий.

  1. В заголовке и по крайней мере один элемент управления содержимым в нижнем колонтитуле документа Word.
  2. Убедитесь, что курсор находится внутри элемента управления содержимым в заголовке.
  3. Вызовите insertHtml , чтобы задать элемент управления содержимым в нижнем колонтитуле.

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

await Word.run(async (context) => {
    // Credit to https://github.com/barisbikmaz for this version of the workaround.
    // For more information, see https://github.com/OfficeDev/office-js/issues/129.

    // Let's say there are 2 content controls in the header and 1 in the footer.
    const contentControls = context.document.contentControls;
    contentControls.load();

    await context.sync().then(function () {
        // Clear the 2 content controls in the header.
        contentControls.items[0].clear(); 
        contentControls.items[1].clear();

        // Clear the control control in the footer then update it.
        contentControls.items[2].clear();
        contentControls.items[2].insertHtml('<p>New Footer</p>', 'Replace');
    });
});

Потеряно форматирование последнего маркера в списке или последнем абзаце

Если форматирование последнего маркера в списке или последнего абзаца потеряно в указанном тексте или диапазоне, проверка, если вы используете Body.insertFileFromBase64 или Range.insertFileFromBase64. Если это так, обновите код, чтобы вместо этого использовать Document.insertFileFromBase64 .

Значение значений свойств NULL в ответе

nullимеет особые последствия в Word API JavaScript. Он используется для представления значений по умолчанию или отсутствия форматирования.

Свойства форматирования, такие как цвет , будут содержать null значения в ответе, если в указанном диапазоне существуют различные значения. Например, если вы получаете диапазон и загружаете его свойство range.font.color:

  • Если весь текст в диапазоне имеет одинаковый цвет шрифта, range.font.color указывает этот цвет.
  • Если в диапазоне используется несколько цветов шрифтов, свойство range.font.color имеет значение null.

Моя надстройка больше не может найти правильное окно Word

Microsoft Word, как и другие приложения Windows, использует иерархию окон для отображения документов и пользовательского интерфейса для пользователей. Эти окна можно определить с помощью дескрипторов окон или имен классов. Начиная с версии Office 2502 (сборка 18526.20118) одно из окон в иерархии Word было удалено.

Возможно, надстройка Word имеет жесткую зависимость от предыдущей иерархии окон Word и поэтому аварийно завершает работу или перестает работать правильно. Пример проблемы см. в статье Возможно, обновления Приложений Office Microsoft 365 приводят к сбою Word Addin. Рекомендуется, чтобы разработчики не полагались на определенную иерархическую структуру окна. Вместо этого текущее руководство заключается в поиске имени класса окна. Чтобы найти окно Word верхнего уровня, найдите имя класса OpusApp. Чтобы найти окно с открытым документом Word, найдите имя класса "_WwG".

Ниже показан пример предыдущей иерархии Word окна.

Предыдущая Word иерархия окон.

Ниже показан пример новой иерархии окна. Обратите внимание, что промежуточное окно с именем класса "_WwF" больше не присутствует.

Новая иерархия окон Word.

Для проверки иерархии окон приложения можно использовать средство отладки, например Spy++ . Однако имейте в виду, что иерархия может измениться в будущем.

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