C# 将实时数据发布到Excel

C# 将实时数据发布到Excel,c#,c++,excel,C#,C++,Excel,我被要求在我选择的C++或C#中创建一个程序,该程序将使用FIX messaging接收各种FX工具的Bid/Offer价格,并将数据存储在数据库中。这部分我知道怎么做,但客户现在告诉我,他希望能够在多台PC上打开n个excel工作簿,以查看历史数据,并在数据进入时查看实时数据 我在Excel2010中看到,您可以直接连接到sql server来检索数据,但刷新频率只能降低到每分钟一次。我曾想过创建一个RSS提要,但这可能太慢了。这些人并不太担心延迟,但我认为如果延迟超过一秒,他们可能不会太高兴

我被要求在我选择的
C++
C#
中创建一个程序,该程序将使用
FIX messaging
接收各种
FX工具的
Bid/Offer
价格,并将数据存储在数据库中。这部分我知道怎么做,但客户现在告诉我,他希望能够在多台PC上打开n个excel工作簿,以查看历史数据,并在数据进入时查看实时数据

我在Excel2010中看到,您可以直接连接到sql server来检索数据,但刷新频率只能降低到每分钟一次。我曾想过创建一个RSS提要,但这可能太慢了。这些人并不太担心延迟,但我认为如果延迟超过一秒,他们可能不会太高兴


我希望实现的是可能的吗?

您可以编写一个VB宏来实现这一点,如下所示:

Sub Refresh_every_second()
'
' Refresh_every_second Macro
'

'
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Application.OnTime Now + TimeValue("00:00:01"), "Refresh_every_second"


End Sub
此宏刷新数据源,然后每秒递归调用自己

注:

  • 要刷新所有页面,请使用
    ActiveWorkbook.RefreshAll
  • 您可能希望引入一种停止此宏的方法,例如单击或按键
编辑:要刷新特定数据连接,可以使用:

ActiveWorkbook.Connections("Data Connection Name").Refresh

太好了,我要试一试。谢谢你,乔。你认为每秒钟刷新一次会在个人电脑上产生操作问题吗?从功能上看,一切都是可操作的;也就是说,用户界面线程没有被阻塞。就性能而言,这可能取决于数据集的数量和大小。例如,在我的系统上,通过Internet刷新16x16数据集占用了大约3%的系统CPU。感谢您的帮助Joe Sisk。