使用Winforms,C#FW4.5使用后期绑定打开excel工作表,如下所示:

objExcel = CreateObject("Excel.Application")


现在我想使用InvokeMember方法,但是我不知道我可以调用的所有excel成员。
例如,我知道我可以这样称呼它:InvokeMember("Close",...以关闭excel,但是在哪里可以找到我可以调用的所有成员的列表以及每个成员的作用呢?

最佳答案

后期绑定


  使用winforms,C#FW4.5使用后期绑定打开excel工作表,如下所示:


如果必须使用后期绑定,则使用c#4.0的dynamic关键字要比InvokeMember容易得多,尽管它不会显示可以提前调用的方法。

检出以下通过dynamic关键字使用后期绑定的代码。请注意,Visual Studio如何允许我键入任何旧内容。尽管无法提供最终成员的自动完成功能,但它确实显示了我已经使用过的商品的成员。我要等到运行时才知道它是否正确(这就是这种后期绑定的局限性)。

c# - C#创建Excel工作表后期绑定(bind)-LMLPHP


  C#现在支持动态后期绑定。该语言一直被强类型化,并且在4.0版本中仍然如此。微软认为,这使C#易于使用,快速且适合.NET程序员所从事的所有工作。但是有时您需要与不基于.NET的系统进行通信。...C#中的dynamic关键字是对处理这些其他方法的麻烦的一种响应Tell me more


...更具体地说:


  C#团队在C#4版本中专门针对的COM互操作方案是针对Microsoft Office应用程序(如Word和Excel)进行编程。目的是使此任务在Visual C#中像在Visual Basic中一样容易和自然。 Tell me more...


早绑定

OP:


  现在我想使用InvokeMember方法,但是我不知道我可以调用的所有excel成员


尽管后期绑定很好,即使使用dynamic,我也喜欢早期绑定。要获取方法列表,可以通过将Microsoft.Office.Interop.Excel添加到项目中来使用早期绑定更加容易且类型安全。

早期绑定:

var application = new Microsoft.Office.Interop.Excel.Application();
application.Visible = true;
application.ShowWindowsInTaskbar = true;


在VS中:

c# - C#创建Excel工作表后期绑定(bind)-LMLPHP

C#4善良

C#4带有一些您只有在处理COM时才会看到的东西,例如索引属性-在C#类型中是不可能的。


  您无法在C#中定义具有索引属性的类型,但可以在COM类型more上使用的情况下使用它们
  
  仅当针对COM interop API编写代码时,才支持C#4.0中的某些较小的语言功能


例如

ws.Range["A1", "B3"].Value = 123;


...比c#4之前的版本容易得多:

ws.get_Range("A1", "B3").Value2 = 123;



  C#4.0支持COM互操作类型的索引属性。您无法在C#中定义具有索引属性的类型,但可以在COM类型more...上使用的情况下使用它们


告诉我更多


C# 4.0 - New C# Features in the .NET Framework 4,MSDN Mag,2010年7月
Dynamic .NET - Understanding the Dynamic Keyword in C# 4,MSDN Mag,2011年2月


c# - C#创建Excel工作表后期绑定(bind)-LMLPHP

关于c# - C#创建Excel工作表后期绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34195650/

10-09 02:25