c# - 实现一个可以异步调用web方法的Excel UDF

标签 c# excel vsto user-defined-functions

最初,我实现了一个可以同步调用网络方法的 UDF,但遇到了很多麻烦,尤其是当我尝试请求大量数据时-- 简而言之,Excel 会挂起并卡住,直到检索到所有数据,这会严重危害用户体验。

我猜同步使用 Web 服务才是真正的 killer 。所以我想知道是否有什么方法可以异步?谁能给我一些指示?哪个工具或平台更受欢迎? (个人还是比较喜欢用C#)

最佳答案

RTD 可以。您必须实现 IRtdServer 接口(interface)。当您的加载项启动时,Excel 会为您提供一个函数指针。对于每个单元格,您将获得一个“excel id”和一个参数列表。发送您的异步 Web 请求。当响应到达时,您调用 Excel 为您提供的通知函数。当 Excel 准备就绪时,它将调用您的 GetData 方法来实际获取数据。

参见 How do I create a real-time Excel automation add-in in C# using RtdServer?有关如何在 C# 中执行此操作的示例。

一旦您理解了 RTD 的工作原理,Excel-DNA 就可以很好地抽象出 COM 管道...强烈推荐。

关于c# - 实现一个可以异步调用web方法的Excel UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7468629/

相关文章:

vb.net - Ms Word Addin 中的isolatedStorageException

.net - VSTO:无法打开另一个 Excel 文件,而第一个文件被加载项的模式窗口阻止

Excel:是否存在检测计算模式变化的事件(自动/手动)

c# - 正则表达式替换#number;#

C# 方法重载与接口(interface)参数

python - Pandas 日期时间格式 VS 谷歌表格日期格式

vba - 混淆 dd/mm/yyyy 和 mm/dd/yyyy

c# - 如何在代码隐藏方法中访问 asp.net 按钮的 "Text"?

c# - 数据绑定(bind) : 'System.Web.UI.Pair' does not contain a property with the name 'First'

excel - 获取第二个工作表中列值等于行/列值的单元格值