Office- JS Addin возникли проблемы в нескольких открытых Excel - PullRequest
1 голос
/ 16 апреля 2020

У меня возникают некоторые проблемы при использовании моего Angular Excel Addin (Office js) в нескольких открытых экземплярах Excel.

Прежде чем я опишу проблему более подробно, я хотел бы дать краткое объяснение того, что делает AddIn:

Пользователь может определить функции UDF в Excel для извлечения данных с сервера и отобразить его в Excel. Однако функции UDF не выполняются напрямую, а только при запуске обновления. После этого запросы отправляются на сервер, данные выбираются, форматируются и отображаются в Excel. Если пользователь нажимает кнопку «Обновить», все рабочие листы в рабочей книге перебираются и выполняется поиск соответствующих функций UDF. Запросы отправляются непосредственно на сервер. При определенных обстоятельствах может потребоваться некоторое время, чтобы ответить на запрос и отобразить данные в Excel (например, когда пользователь определил 100 функций UDF на 100 листах, каждая из которых содержит один UDF).

I в настоящее время возникают следующие проблемы:

1) Если пользователь открыл экземпляр Excel с функциями UDF, определенными в 100 листах, и другой экземпляр с 70 листами, содержащими функции UDF, я получаю сообщение «Неожиданная ошибка сервера». произошла ошибка при переключении между открытыми экземплярами Excel. Обновление не выполняется, иногда запросы вообще не отправляются или не могут быть обработаны. Я думаю, что следующий фрагмент кода может вызвать эту проблему:

Excel.run (asyn c context => {const sheet: Excel.Worksheet = context.workbook.worksheets.getActiveWorksheet (); ...}

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

Возможно ли, что надстройка может работать должным образом только в одном случае, или я делаю что-то не так?

2) Если вы запустили обновление рабочей книги через надстройку (например, 100 листов с функциями UDF) и Excel теряет фокус (например, переключаясь на Word или Edge), а затем, как уже упоминалось в пункте 1), не все запросы отправляются или обрабатываются.

Я надеюсь, что у некоторых из вас уже были подобные проблемы и, возможно, есть решение для их.

1 Ответ

1 голос
/ 16 апреля 2020

Спасибо Marco Siebert за сообщение об этой проблеме нам.

Для 1 # это известная проблема, которую мы сейчас расследуем, она также отслеживается по https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/39781582-fix-generalexceptions-being-thrown-when-multiple-e,

Чтобы решить эту проблему, нам нужно исправить для каждого API, использованного в этом сценарии, у нас есть рабочий элемент 3743479 для этой проблемы. Вы также можете добавить эту функцию в голос пользователя. кроме того, не могли бы вы рассказать мне об API, которые вы пытаетесь использовать в сценарии с несколькими книгами?

На ваш вопрос: «context.workbook всегда возвращает текущую открытую книгу или ту, которая в данный момент открыта в активном экземпляре Excel. Но я не нашел способа получить доступ к книге по имени или идентификатору». Это сделано специально, так как надстройка JS для каждой книги. Поэтому мы не поддерживаем доступ к другому содержимому рабочей книги, кроме API-интерфейса addFromBase64, который позволяет копировать рабочие листы из другой рабочей книги в текущую.

...