C#Excel RTD服务器多个实例断开一个工作表上的所有公式,停止另一个工作表上的公式

Meg*_*n82 5 c# excel rtd

我在C#中为Excel创建了一个RTD服务器,它不断地使用数据更新单元格,并且需要使用多个Excel实例.问题是如果我在多个Excel实例中具有相同的RTD公式并且我在其中一个Excel实例中删除了公式,它会调用RTD服务器中的DisconnectData方法,因此Excel的其他实例中的相同公式会停止更新即使他们仍然应该更新.

在C#中是否有一种方法可以强制每个Excel实例拥有自己的RTD服务器,或者RTD服务器是否有办法正确识别Excel的多个实例并在调用之前检查是否已从所有excel工作簿中删除了所有公式实例我的RTD服务器中的DisconnectDatamethod.

bra*_*dmo 2

假设您的 RTD 函数使用 UDF 封装,一种解决方案是从 UDF 调用中为每个工作表分配一个标识符(例如 Guid)。您可以将标识符保留为自定义工作表属性,然后将其添加到每个传出 RTD 主题,这将在每个工作表到达您的 RTD 服务器时生成一组唯一的主题。

然而,在处理大量函数时,通过每个 RTD 调用访问自定义工作表属性会对性能产生影响,因此您应该在短时间内缓存标识符以缓解这种情况。执行此操作的一种方法是维护由工作表对象键入的字典查找。在每个 UDF 调用的范围内,通过 Application.Caller 属性获取与调用单元格关联的工作表(将其转换为 Range 并从中获取工作表属性),然后在字典中查找标识符。