如何从C#控件中复制并将链接粘贴到excel中

时间:2010-06-01 16:53:16

标签: c# excel

我有一个应用程序,我想链接到excel。我没有偏好使用哪个控件,只要我可以复制数据或控件,并将链接粘贴到excel中。当我的应用程序中的数据发生变化时,我希望单元格在excel中更改。

我有一个客户声称它有可能而且他已经看过了,但是没有证据可能会混淆。

我已经搜索过互联网,并提出了一些半解决方案,以及那些想要与我想要的相反的人。有谁知道完整的解决方案?

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找IDataObject COM界面。

如果将数据公开为OLE对象,则可以使用IDataObject::DAdvise在应用程序中的数据发生变化时通知Excel。

这需要付出一些努力,因为您必须实现IDataObject接口(以及其他一些接口)以允许Excel正确显示和托管您正在公开的信息。

如果这是您所追求的,请参阅以下链接:

http://winapi.freetechsecrets.com/ole/OLEIDataObjectDAdvise.htm

http://www.catch22.net/tuts/dragdrop/1(主要涉及拖放)

http://www.catch22.net/tuts/dragdrop/2(主要涉及拖放)

http://www.catch22.net/tuts/dragdrop/3(主要涉及拖放)

http://us.generation-nt.com/answer/support-iadvisesink-word-excel-powerpoint-help-26654252.html

http://www.tenouk.com/visualcplusmfc/mfcsupp/ioleobject.html

答案 1 :(得分:0)

另一种选择是使用VSTO开发Excel插件。这个架构的难点在于你必须在源应用程序和插件之间实现自己的IPC。但是,我根据之前的DDE经验选择IDataObject(DDE Emulation)。

IDataObject方法的优点是典型的旧学校Excel高级用户会对此感到满意;并且它不需要任何插件来运行。如果拖动控件并放到Excel上的行为是场景的重要部分,那么可能值得实现COM服务器。但是,如果您的客户不熟悉DDE并且只想动态更新Excel,那可能不值得。