C#创建excel表后期绑定

时间:2015-12-10 07:03:26

标签: c# excel reflection late-binding

使用winforms,C#FW4.5打开一个带有后期绑定的Excel工作表,如下所示:

<form action="/test.html/start_task/" method="POST" id="Submit_button">

现在我想使用objExcel = CreateObject("Excel.Application") 方法,但我不知道我可以调用的所有excel成员。 例如,我知道我可以这样称呼它:InvokeMember以便关闭excel,但是我在哪里可以找到我可以调用的所有成员的列表以及它们各自的成员?

1 个答案:

答案 0 :(得分:5)

后期绑定

  

使用winforms,C#FW4.5打开一个带有后期绑定的Excel工作表,如下所示:

如果你必须使用后期绑定,那么使用c#4.0 dynamic关键字要比InvokeMember容易得多,尽管它不会告诉你哪些方法可以提前调用。

通过dynamic关键字查看以下使用后期绑定的代码。注意Visual Studio如何允许我输入任何旧东西。虽然最终成员的自动完成功能无法使用,但它确实会显示已经使用过的项目的成员。直到运行时我才知道我是否做对了(这种方式是后期绑定的限制)。

enter image description here

  

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

......更具体地说:

  

C#团队专门针对C#4版本的COM互操作方案是针对Microsoft Office应用程序编程,例如Word和 Excel 。目的是使这个任务在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:

enter image description here

C#4善良

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

  

您无法在C#中定义具有索引属性的类型,但如果您在COM类型more上执行此操作,则可以使用它们

     

只有在针对COM互操作API编写代码时才支持C#4.0中的一些较小的语言功能

e.g。

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

...比pre-c#4简单得多:

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

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

告诉我更多

enter image description here