excel - Office-JS 插件在多个打开的 Excel 中出现问题
问题描述
当我在多个打开的 Excel 实例中使用我的 Angular Excel 插件(Office js)时,我遇到了一些问题。
在更详细地描述问题之前,我想简要解释一下 AddIn 的作用:
用户可以在 Excel 中定义 UDF 函数以从服务器获取数据并在 Excel 中显示。但是,UDF 函数不会直接执行,而是仅在触发更新时执行。之后,请求被发送到服务器,数据被提取、格式化并显示在 Excel 中。如果用户单击“更新”按钮,则迭代工作簿中的所有工作表并搜索相应的 UDF 函数。请求直接发送到服务器。在某些情况下,响应请求并在 Excel 中显示数据可能需要一些时间(例如,当用户在 100 个工作表中定义了 100 个 UDF 函数,每个工作表包含一个 UDF)。
我目前有以下问题:
1) 如果用户打开了一个包含 100 个工作表中定义的 UDF 函数的 Excel 实例和另一个包含 70 个包含 UDF 函数的工作表的实例,当我在打开的 Excel 实例之间切换时出现“发生意外服务器错误”错误。更新没有运行,有时请求根本没有发送或无法处理。我认为以下代码段可能会导致此问题:
Excel.run(async context => { const sheet: Excel.Worksheet = context.workbook.worksheets.getActiveWorksheet(); ... }
context.workbook 始终返回当前打开的工作簿或当前在活动 Excel 实例中打开的工作簿。但我还没有找到按名称或 ID 访问工作簿的方法。
插件是否有可能只能在一种情况下正常工作,还是我做错了什么?
2) 如果您已经通过 AddIn 开始更新工作簿(例如 100 个具有 UDF 功能的工作表)并且 Excel 失去焦点(例如通过切换到 Word 或 Edge),那么正如 1) 中已经提到的,并非所有请求都已发送或处理.
我希望你们中的一些人已经遇到过类似的问题,并且可能有解决方案。
解决方案
感谢 Marco Siebert 向我们报告此问题。
对于 1#,这是我们现在正在调查的已知问题,它也在https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/39781582-fix-generalexceptions-being进行跟踪-throw-when-multiple-e ,
为了解决这个问题,我们需要修复这个场景中使用的每个 API,我们有一个工作项 3743479 来解决这个问题。您也可以在用户语音中支持此功能。此外,您能否分享一下您尝试在多个工作簿场景中使用的 API?
对于您的问题:“context.workbook 始终返回当前打开的工作簿或当前在活动 Excel 实例中打开的工作簿。但我还没有找到按名称或 ID 访问工作簿的方法。” 这是设计使然,因为 JS 插件是每个工作簿的。所以我们不支持访问另一个工作簿内容,除了 addFromBase64 API,它提供了将工作表从另一个工作簿复制到当前工作簿的功能。
推荐阅读
- javascript - 在 Highchart 中将目标添加到柱形图中
- angular - 是否可以在角度材料中同时使用 filter 和 filterPredicate ?
- android - 在 Android Studio 中构建 Telegram 源时出现 NDK 错误
- php - 从作业队列内部广播 laravel 事件
- ios - 拍摄视图屏幕截图崩溃 - UIViewControllerHierarchyInconsistency Only in ViewWillAppear
- android - 应用新版本更新未显示在 Google Play 上
- java - 如果使用下载管理器完成下载,如何显示警报
- python - Scrapy / Parse几个具有相同功能的类别和子类别
- r - 在 R 中创建具有多个变量的数据框
- cmake - 如何组织具有菱形依赖的庞大的单体代码库?