C#创buildexcel表单后期限

使用winforms,C#FW4.5打开一个excel表单,具有这样的后缀:

objExcel = CreateObject("Excel.Application") 

现在我想使用InvokeMember方法,但是我不知道所有可以调用的excel成员。 例如,我知道我可以这样调用它: InvokeMember("Close",...为了closuresexcel,但是我在哪里可以find我可以调用的所有成员的列表以及每个成员都做了什么?

后期绑定

使用winforms,C#FW4.5打开一个excel表单,用这个方法:

如果您必须使用后期绑定,使用c#4.0的dynamic关键字比InvokeMember更容易,尽pipe它不会提示您可以提前调用哪些方法。

查看下面的代码,通过dynamic关键字使用后期绑定。 注意Visual Studio如何让我input任何旧的东西。 虽然自动完成的最终成员不可用,它确实显示我已经使用的项目的成员。 直到运行时我才知道是否正确(这是后期绑定的限制)。

在这里输入图像描述

C#现在支持dynamic后期绑定。 该语言一直是强types的,在4.0版本中仍然如此。 微软认为,这使得C#易于使用,快速,适合.NET程序员正在使用的所有工作。 但有时候,你需要与不是基于.NET的系统进行通信…… C#中dynamic关键字是处理这些其他方法的麻烦的反应 告诉我更多

…更具体地说:

C#团队专门针对C#4发布的COM互操作场景是针对Microsoft Office应用程序(如Word和Excel)进行编程的。 目的是使这个任务在C#中像在Visual Basic中一样简单自然 。 告诉我更多…

早期绑定

OP:

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

虽然迟绑定很好,即使dynamic ,我喜欢早绑定。 要获取方法列表,通过将Microsoft.Office.Interop.Excel添加到项目中,使用早期绑定变得更加容易和types安全。

早期绑定:

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

这里是VS:

在这里输入图像说明

C#4善良

c#4带来了一些你只会在处理COM时看到的东西,比如索引属性 – 这在c#types中是不可能的。

你不能在C#中定义具有索引属性的types,但是你可以使用它们,只要你在COMtypes上做了更多的事情

C#4.0中的一些较小的语言function仅在针对COM interop API编写代码时才受支持

例如

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

…比C#4更简单:

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

C#4.0支持COM互操作types的索引属性。 你不能在C#中定义具有索引属性的types,但是你可以使用它们,只要你在COMtypes上做了更多…

告诉我更多

  • C#4.0 – .NET Framework 4中的新C#特性 ,MSDN Mag 2010年7月

  • Dynamic .NET – 了解C#4中的dynamic关键字 ,MSDN Mag 2011年2月

在这里输入图像说明