Casting System .__ ComObject到已知类型的反射

时间:2011-09-15 10:53:34

标签: c# vb.net excel reflection

我正在尝试使用反射创建Excel文件。原因是,应用程序将在许多机器上运行,其中一些机器可能安装或不安装excel。我决定嵌入“Microsoft.Office.Interop.Excel.dll”并通过反射生成excel电子表格。
我想要的代码是:

Dim app as new Excel.Application
Dim wb as Excel.Workbook = app.Workbooks.Add(1)
Dim ws as Excel.Worksheet = wb.Worksheets(1)

目前一切正常,除非我检索对作为“System .__ ComObject”返回的Worksheet实例的引用。

有没有办法将“System .__ ComObject”强制转换为“工作表类型”?

我知道底层的“System .__ ComObject”是“Worksheet”类型,因为在搜索对象的属性后抛出的异常会给出错误,表明它实际上是“工作表”类型。例如:“类型工作表不提供某些属性,......” 任何帮助表示赞赏,
感谢

1 个答案:

答案 0 :(得分:1)

您需要将__ComObject放在运行时可调用包装器RCW中。你可以看看这个:CreateWrapperOfType