相关文章:
浅谈Excel开发(1) Excel开发概述
浅谈Excel开发(二) Excel 菜单系统
浅谈Excel开发(三) Excel 对象模型
上文介绍了Excel中的UDF函数,本文介绍一下同样重要的RTD函数。从Excel 2002开始,Excel引入了 一种新的查看和更新实时数据的机制,即real-time data简称RTD函数,他是一种Push-Pull的方式,及在 需要更新数据的时候,RTD给Excel Push一个消息说要更新数据,Excel在收到消息后主动拉取Pull新的数 据。RTD函数最开始的用途在于更新实时变化的数据,比如股票实时行情数据,实时天气预报数据,球队 比赛得分数据等等。
在过去,要实现这些功能,需要依赖一些其他诸如Dynamic Data Exchange(DDE)技术来访问实时数据 资源,但DDE和标准的Excel函数样式有很大的不同,并且并不是为Excel获取实时数据而设计的,缺乏健 壮性,并且效率不高,RTD的引入解决了这些问题。
本文首先介绍RTD的一些常用的使用场景,RTD函数的基本结构,注意事项,最后演示如何通过RTD函数 来实现从Google Financial API中获取实时行情数据。
一 使用场景
RTD函数很有用,如果您遇到以下情况,那么您应当考虑使用RTD函数了:
实时数据更新:这是很常见遇到的一种情景,比如说实时行情,实时天气情况,直播的比赛得分情况 等。
一些特殊的场景,比如说证券交易公司的交易系统,这些公司的某些模型会基于实时的行情或者指数 进行计算,通过RTD获取这些基础数据的实时数据之后,在此基础上可以进行动态的建模和分析。
异步的,耗时的数据请求:传统的UDF函数存在的一个问题是,他是同步的,就是说,如果某个函数的 执行时间过长,会导致前端界面的卡顿,尤其是在UDF函数访问数据库,WebService,或复杂的计算过程 等不确定性及耗时的执行环境时。基于RTD技术可以实现异步的UDF函数,从而带来更好的用户体验。
二 基本结构
Excel RTD函数是一个实现了IRtdServer接口的Com组件,Excel通过该Com组件与实时数据进行交互。 要实现RTD 函数,必须要实现IRtdServer这一接口,该接口位于 Microsoft.Office.Interop.Excel命名 空间中,跳转到定义,可以看到该接口的内部:
/// <summary>/// Represents an interface for a real-time data server./// </summary>[Guid("EC0E6191-DB51-11D3-8F3E-00C04F3651B8")] [TypeLibType(4160)] public interface IRtdServer2{/// <summary> /// Adds new topics from a real-time data server. The ConnectData method is called /// when a file is opened that contains real-time data functions or when a user /// types in a new formula which contains the RTD function. /// </summary> /// <param name="TopicID"> /// Required Integer. A unique value, assigned by Microsoft Excel, which identifies the topic.</param> /// <param name="Strings">Required Object. A single-dimensional array of strings identifying the topic.</param> /// <param name="GetNewValues"> Required Boolean. True to determine if new values are to be acquired.</param> /// <returns></returns> [DispId(11)]dynamic ConnectData(int TopicID, ref Array Strings, ref bool GetNewValues);/// <summary> /// Notifies a real-time data (RTD) server application that a topic is no longer in use. /// </summary> /// <param name="TopicID"> Required Integer. A unique value assigned to the topic assigned by Microsoft Excel.</param> [DispId(13)]void DisconnectData(int TopicID); [DispId(14)]int Heartbeat(); /// <summary> /// This method is called by Microsoft Excel to get new data. /// </summary> /// <param name="TopicCount">TopicCount: /// Required Integer. The RTD server must change the value of the TopicCount /// to the number of elements in the array returned.</param> /// <returns></returns> [DispId(12)]Array RefreshData(ref int TopicCount); /// <summary> /// The ServerStart method is called immediately after a real-time data server /// is instantiated. Negative value or zero indicates failure to start the server; /// positive value indicates success. /// </summary> /// <param name="CallbackObject">Required Microsoft.Office.Interop.Excel.IRTDUpdateEvent object. The callback object.</param> /// <returns></returns> [DispId(10)]int ServerStart(IRTDUpdateEvent CallbackObject); /// <summary> /// Terminates the connection to the real-time data server. /// </summary> [DispId(15)]void ServerTerminate(); }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索excel
, 数据
, 函数
, server
, excel 函数
, 实时
, required
sql serverstart withwith
rtd函数、rtd1185dd 开发、excel rtd函数、rtd1185dd 开发资料、浅谈老婆被开发经验,以便于您获取更多的相关知识。