实现可以异步调用Web方法的Excel UDF

woo*_*ddy 5 c# excel vsto user-defined-functions

最初,我实现了一个可以同步调用Web方法的UDF ,但是遇到了很多麻烦,特别是当我试图请求大量数据时 - 简而言之,Excel会挂起并冻结,直到检索到所有数据,严重危害用户体验.

我猜测同步消费Web服务是真正的杀手.所以我想知道是否有任何方法可以异步进行?谁能给我一些指示?更优选任何工具或平台?(我个人还是喜欢用C#)

Fra*_*ank 5

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

请参阅如何使用RtdServer在C#中创建实时Excel自动化加载项?有关如何在C#中执行此操作的示例.

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