Как перезагрузить пользовательские функции Excel?

Я успешно развернул образец Excel-Custom-Functions и могу использовать новый JS функции.

После изменения кода / определения в customfunctions.js я перезапустил свой веб-сервер, запустил Excel, снова вставил настраиваемые функции со страницы надстроек Office, но все же получил исходные функции.

Если я запущу Excel, не вставляя образец снова, функции все равно будут известны !?

Как заставить Excel удалить такую ​​надстройку и перезагрузить ее с нуля?

Пример: образец содержит несколько пользовательских функций и их соответствующую регистрацию:

Excel.Script.CustomFunctions["CONTOSO"]["ADD42"] = {
...
Excel.Script.CustomFunctions["CONTOSO"]["GETTEMPERATURE"] = {
...

Переименуйте функцию и полностью удалите другую функцию:

Excel.Script.CustomFunctions["CONTOSO"]["ADD42RENAMED"] = {
...
/* Excel.Script.CustomFunctions["CONTOSO"]["GETTEMPERATURE"] = {
...

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


person Kai    schedule 20.11.2017    source источник
comment
Предоставьте код, который вы получили, и объясните, что вы уже пробовали.   -  person Manuel Mannhardt    schedule 20.11.2017


Ответы (1)


Excel кэширует ранее зарегистрированные функции для каждой надстройки. Причина кэширования заключается в том, что функции доступны пользователю для просмотра и запуска (в результате чего ваша надстройка загружается автоматически) еще до ее загрузки.

Когда вы запускаете следующий код, все предыдущие зарегистрированные функции в кэше удаляются и немедленно заменяются новыми, указанными вами:

Excel.run(function (context) {        
    context.workbook.customFunctions.addAll();
    return context.sync().then(function(){});
}).catch(function(error){});

Изменить: если вы все еще видите функции, которые, по вашему мнению, не должны быть зарегистрированы после вызова приведенного выше кода, есть 2 вероятные возможности:

  1. «Неправильные» функции были фактически зарегистрированы другой надстройкой (возможно, в более раннем тесте, который вы выполняли).
  2. Вызов Excel.run не работает (вы можете проверить параметр error, чтобы узнать, является ли это вашей проблемой)

Может быть полезно вручную очистить регистрационный кеш вашего компьютера: удалите папку AppData \ Local \ Microsoft \ Office \ 16.0 \ Wef \ CustomFunctions.

-Майкл, личка для надстроек

person Michael Saunders    schedule 21.11.2017
comment
Предложенный вами фрагмент кода уже является частью образца. Похоже, это не работает надежно. Или это поведение было исправлено в конкретной версии Excel? Я использую версию 1711 (сборка 8711.2037), 32 бит. - person Kai; 22.11.2017
comment
Я добавил дополнительную информацию к своему ответу - person Michael Saunders; 22.11.2017
comment
@MichaelSaunders Это все еще в силе? Я не могу найти этот api с помощью ExcelApi 1.1 - person José Salgado; 14.01.2020