3

我已经成功部署了Excel-Custom-Functions示例并且可以使用新的 JS 函数。

更改中的代码/定义后customfunctions.js,我重新启动了我的 Web 服务器,启动了 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 之后仍会显示旧的元数据。

4

1 回答 1

0

Excel 为每个加载项缓存以前注册的函数。缓存的原因是,即使在加载项加载之前,用户也可以查看和触发函数(导致加载项自动加载)。

当您运行以下代码时,缓存中所有以前注册的函数都将被删除并立即替换为您指定的新函数:

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

编辑:如果您在调用上面的代码后仍然看到您认为不应该注册的功能,则可能有两种可能性:

  1. “不正确”的功能实际上是由不同的加载项注册的(可能是您之前正在进行的测试)。
  2. Excel.run调用失败(你可以检查error参数看看这是否是你的问题)

手动清除计算机的注册缓存可能很有用:删除文件夹 AppData\Local\Microsoft\Office\16.0\Wef\CustomFunctions

-Michael,外接程序的 PM

于 2017-11-21T18:13:41.550 回答