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月