gpt4 book ai didi

C# Excel RTD 服务器多实例断开一张纸上的所有公式停止另一张纸上的公式

转载 作者:太空狗 更新时间:2023-10-29 23:39:37 28 4
gpt4 key购买 nike

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

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

最佳答案

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

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

关于C# Excel RTD 服务器多实例断开一张纸上的所有公式停止另一张纸上的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843445/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com