【发布时间】:2020-04-16 06:55:50
【问题描述】:
当我在多个打开的 Excel 实例中使用我的 Angular Excel 插件 (Office js) 时,我遇到了一些问题。
在更详细地描述问题之前,我想简要解释一下 AddIn 的作用:
用户可以在 Excel 中定义 UDF 函数以从服务器获取数据并在 Excel 中显示。但是,UDF 函数不会直接执行,而是仅在触发更新时执行。之后,请求被发送到服务器,数据被提取、格式化并显示在 Excel 中。如果用户点击“更新”按钮,则迭代工作簿中的所有工作表并搜索相应的 UDF 函数。请求直接发送到服务器。在某些情况下,响应请求并在 Excel 中显示数据可能需要一些时间(例如,当用户在 100 个工作表中定义了 100 个 UDF 函数,每个工作表包含一个 UDF)。
我目前有以下问题:
1) 如果用户打开了一个包含 100 个工作表中定义的 UDF 函数的 Excel 实例和另一个包含 70 个包含 UDF 函数的工作表的实例,当我在打开的 Excel 实例之间切换时出现“发生意外服务器错误”错误。更新没有运行,有时请求根本没有发送或无法处理。我认为以下代码 sn-p 可能会导致此问题:
Excel.run(异步上下文 => { 常量表:Excel.Worksheet = context.workbook.worksheets.getActiveWorksheet(); ... }
context.workbook 始终返回当前打开的工作簿或当前在活动 Excel 实例中打开的工作簿。但我还没有找到按名称或 ID 访问工作簿的方法。
有没有可能插件只能在一个实例中正常工作,还是我做错了什么?
2) 如果您已经通过 AddIn 开始更新工作簿(例如 100 个具有 UDF 函数的工作表)并且 Excel 失去焦点(例如通过切换到 Word 或 Edge),那么正如 1) 中已经提到的,并非所有请求都是已发送或处理。
我希望你们中的一些人已经遇到过类似的问题,也许有解决方案。
【问题讨论】:
-
对于 2#,您能分享一下脚本实验室的要点吗?我想在我身边有一个repro。
-
stackoverflow 中有一个指导方针:只在一个帖子中关注一个问题,因此第二个问题可能会丢失,所以也许你可以为第二个问题创建另一个帖子
标签: excel angular office-js user-defined-functions