2012-03-16 23 views
6

我希望能够允许用户在Excel中的单元格中输入自定义公式,该公式会订阅由外部.NET应用程序提供的数据。例如,用户可能会输入...通过.NET来源的公式将数据导入到Excel电子表格中的适当技术是什么?

=getCurrentValue("ABC") 

有一个外部.NET(C#)应用程序每分钟确定一次“ABC”的值。

单元格应该显示来自外部应用程序的“ABC”的初始值,并在外部应用程序发送新值时进行更新。

在过去,我认为外部应用程序将是一个DDE服务器,公式将是一个DDE客户端公式,但DDE显然已经死亡。用什么“正确的”技术来做到这一点?

请注意,电子表格需要通过公式提取数据。信息不会进入固定的模板excel文件,而是进入用户输入公式的任何电子表格。

感谢,

约翰

+0

FWIW,我认为问题是很清楚aske d,并发现在非接受的答案中存在的非常高的不相关性完全令人兴奋。 – BrainSlugs83 2014-03-03 21:57:39

回答

5

Excel的RTD(实时数据)是替代DDE。它允许您在更新可用时将值推送到单元格。如果提供更新的进程是外部应用程序,则在RTD服务器和外部应用程序之间设置WCF通道应允许您将实时更新提供给Excel。

这里有一些链接:

+0

还有更多他的文章,请参阅http://weblogs.asp.net/kennykerr/pages/My-Articles.aspx上的列表 – quetzalcoatl 2013-09-10 10:59:46

-1

您可以通过Excel阿比Excel表进行通信:

new Microsoft.Office.Interop.Excel.Application();

+0

虽然你可以考虑CSV文件。大多数主机提供商不允许在那里的服务器上的Office,所以你可以写入和CSV文件。 虽然您可以使用Microsoft.Office.Interop.Excel做更多工作,但您甚至可以创建打印区域和图表 – ydd1987 2012-03-16 20:56:12

+1

excel interop似乎针对自动执行excel任务或将数据推送到excel。例如,它可以在Excel中触发DDE请求。我已经调整了这个问题,以反映我们希望excel提取数据(尽管一旦excel订阅,更新将被推回)。 DDE是完美的,但似乎不再推荐。是否有机制通过interop注册公式/回调/某些东西?如果可以的话,你可以指点我一个例子吗? – 2012-03-16 21:15:31

+0

是这样的吗? oRng = oSheet.get_Range(“C2”,“C6”); oRng.Formula =“= A2&\”\“& B2"; – ydd1987 2012-03-16 21:18:57

相关问题