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

在典型的Winform C#应用程序中是否有任何使用Microsoft Excel作为网格控件的良好示例?

我遇到了很多讨论excel“like”控件或与Excel等function类似的网格控件的主题。

为什么不使用excel作为一个GRID控件,它具有构build所有的好东西(公式引擎,sorting,过滤等)

您当然可以将Excel作为WinForm应用程序中的一个控件托pipe ,因此您可能需要部分function(包括重要的注意事项)。 但是,为了连接许多第三方网格库中的其他function,需要花费大量的工作,并且有许多缺陷。

主要原因是Excel是本地Windows应用程序,并不在.Net框架下运行。 因此,所有的操作必须在武器长度上完成 – 你必须实例化应用程序,实例化一个表,尝试和订阅某些事件(其中许多可能不可用,因为Excel 不是为此devise的),当然,尝试和财产pipe理所有的COM引用,以避免内存泄漏。

您提到的网格控件都是从底层构build的,作为控件在.Net应用程序中进行托pipe,因此可以展示人们想要的网格样式交互types的属性和事件 – 请记住,Excel不仅仅是一个网格。

但是,如果要承认Excel可以成为一个function强大的工具,Microsoft提供了VSTO–一个允许您使用.Net开发Excel(和其他办公应用程序)的运行时

据我所知,没有用于embeddedOffice应用程序的.NET控件。

早些时候,你可以使用DSOFramer来达到你想要的效果,但是之后就停止了。 我相信它仍然有效(我不确定)。 Web浏览器(COM)控件是DSOFramer的替代品,但有其自身的缺点。 例如,你不能使用内置的“好东西”。

下面是个人的意见

我怀疑MS永远不会支持embedded式Office应用程序,原因很简单。 MS-Office应用程序是“最终用户目标”产品。 你需要单独的许可证,从商业的angular度来看,他们不希望松散的:)像我之前提到的这些只是我个人的想法,并没有回应MS的意见。