首页 > 解决方案 > 大规模更新电子表格中的 Excel-Dna 易变函数

问题描述

我使用 Excel-Dna 创建了一个加载项,并将导出的函数标记为 Volatile (IsVolatile=true),这给了我所需的行为。函数利用简单查询从 SQL Server 实例中检索数据。

但是,在具有数百个链接到外部源的单元格的电子表格的特定情况下,重新计算通常会冻结 Excel 实例。

虽然我想保留 Volatile 功能,但如果我可以跳过函数重新计算,例如,输入参数相同并且最后一次调用是在很小的时间间隔内进行的,那将很有用。不确定这是否可取,但我正在尝试解决方法以避免 IsVolatile=False。

标签: c#excel-addinsexcel-dna

解决方案


您可以在加载项中保留一个缓存,该缓存存储最后返回的值和最后检查的时间,使用类似 MemoryCache的东西。您还可以考虑确定是否可以使函数成为线程安全的。不过,易失性通常是一个坏主意 - 如果后端数据经常更改,您需要实时馈送 - 请参阅Excel-DNA RTD 示例系列。这可以帮助您摆脱 volatile,但仍会定期更新数据(更改时)。


推荐阅读