在多个打开的Excel实例中使用Angular Excel插件(Office js)时遇到一些问题。
在更详细地描述问题之前,我想简单解释一下AddIn的作用:
用户可以在Excel中定义UDF函数,以从服务器获取数据并在Excel中显示。但是,UDF函数不直接执行,而仅在触发更新时执行。之后,将请求发送到服务器,数据被提取,格式化并在Excel中显示。如果用户单击“更新”按钮,则会迭代工作簿中的所有工作表,并搜索相应的UDF函数。这些请求直接发送到服务器。在某些情况下,可能需要一些时间来回答请求并在Excel中显示数据(例如,当用户在100个工作表中定义了100个UDF函数时,每个工作表都包含一个UDF)。
我目前有以下问题:
1)如果用户打开了一个Excel实例,该实例具有在100个工作表中定义的UDF函数,而另一个实例具有70个包含UDF函数的工作表,则当我在打开的Excel实例之间切换时,出现“发生意外的服务器错误”错误。更新无法进行,有时根本不发送请求或无法处理请求。我认为以下代码片段可能会导致此问题:
Excel.run(异步上下文=> {常量表:Excel.Worksheet = context.workbook.worksheets.getActiveWorksheet(); ...}
context.workbook始终返回当前打开的工作簿或活动Excel实例中当前打开的工作簿。但是我还没有找到一种通过名称或ID访问工作簿的方法。
插件只能在一个实例中正常工作,还是我做错了什么?
2)如果您已通过AddIn(例如具有UDF功能的100个工作表)开始了工作簿的更新,而Excel失去了焦点(例如,通过切换到Word或Edge),则正如第1节所述,并非所有请求都已发送或处理。
我希望你们中有些人已经遇到过类似的问题,也许可以为他们解决。
感谢Marco Siebert向我们报告此问题。
对于1#,这是一个我们正在调查的已知问题,它也在https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/39781582-fix-generalexceptions-being中进行跟踪当多个e被抛出时,
要解决此问题,我们需要修复此方案中使用的每个API,为此问题我们有一个工作项3743479。您也可以在用户语音中推荐此功能。此外,能否请您分享我要在多个工作簿方案中使用的API?
对于您的问题:“ context.workbook总是返回当前打开的工作簿或活动的Excel实例中当前打开的工作簿。但是我还没有找到一种通过名称或ID访问工作簿的方法。” 这是设计使然,因为每个工作簿都有JS加载项。因此,除了addFromBase64 API之外,我们不支持访问其他工作簿内容,该API提供了将工作表从另一个工作簿复制到当前工作簿的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句