如何在C#winforms中使用Microsoft Excel作为网格控件?

如何在C#winforms中使用Microsoft Excel作为网格控件?,c#,excel,winforms,winforms-interop,C#,Excel,Winforms,Winforms Interop,在典型的winform C#应用程序中,是否有使用Microsoft Excel作为网格控件的好例子 我遇到过很多关于excel“like”控件或功能类似excel的网格控件的帖子 为什么不使用excel作为网格控件呢?它在构建中具有所有的优点(公式引擎、排序、过滤等)据我所知,没有用于嵌入Office应用程序的.NET控件 早些时候,您可以使用来实现您想要的,但后来它被中断了。我相信它仍然有效(我不确定)。Web浏览器(COM)控件是DSOFramer的替代品,但有其自身的缺点。例如,您不能使

在典型的winform C#应用程序中,是否有使用Microsoft Excel作为网格控件的好例子

我遇到过很多关于excel“like”控件或功能类似excel的网格控件的帖子


为什么不使用excel作为网格控件呢?它在构建中具有所有的优点(公式引擎、排序、过滤等)

据我所知,没有用于嵌入Office应用程序的.NET控件

早些时候,您可以使用来实现您想要的,但后来它被中断了。我相信它仍然有效(我不确定)。Web浏览器(COM)控件是DSOFramer的替代品,但有其自身的缺点。例如,您不能使用内置的“Goodies”

以下只是我个人的意见

我怀疑微软永远不会支持嵌入式办公应用程序,原因很简单。MS Office应用程序是“面向最终用户”的产品。您需要单独的it许可证,并且从业务角度来看,他们不希望在这方面有所松懈:)正如我前面提到的,这些只是我个人的想法,并不支持MS的观点。

您当然是WinForm应用程序中的一个控件,因此您所需要的部分是可能的(需要注意的是)。然而,连接在许多第三方网格库中看到的其余功能需要大量的工作,并且存在许多缺陷

这样做的主要原因是Excel是本机Windows应用程序,不在.Net framework下运行。因此,所有的操作都必须独立完成—您必须实例化应用程序、实例化工作表、尝试并订阅某些事件(其中许多事件可能不可用,因为Excel不是为此目的而设计的),当然,还必须尝试并妥善管理所有COM引用,以避免内存泄漏

您提到的网格控件都是作为要托管在.Net应用程序中的控件从头开始构建的,因此可以围绕人们想要的网格样式交互类型公开属性和事件—请记住,Excel不仅仅是一个网格

然而,微软提供了一个运行时,让您可以使用.Net开发Excel(和其他office应用程序),这似乎是为了承认Excel在以编程方式利用时是一个强大的工具