1

我正在尝试动态加载程序集并创建其类型的变量:

Assembly Ass= Assembly.LoadFrom(@"d:\abc\microsoft.office.interop.excel.dll");
foreach(Type Excel Assembly.Gettypes())
{
    // here now  Type contains
    // Excel.nameSpace="microsoft.officce.interop.excel"

    // now i need to creae an variable of  type "Excel"

    microsoft.officce.interop.excel.applicationClass excel= null;
    // something like this 
    //Here  Excel is my nameSpace
    Excel.officce.interop.excel.applicationClass excel= null
}

我从过去 2 天开始着手解决这个问题,任何帮助我如何声明 Excel 类型的变量(这是我需要创建的类型)

任何帮助都会非常感谢

4

2 回答 2

2

我不确定这是否适用于该程序集,但通常您可以通过从程序集中获取类型然后使用Activator.CreateInstance创建实例来做到这一点:

Type type = assembly.GetType("MyType");

object instanceOfMyType = Activator.CreateInstance(type);

您需要知道要创建的类型的名称(“Excel.Application”?)

如果你知道它的路径,你也可以直接从 dll 中获取类型:

Activator.CreateInstance(assmblyFileName, typeName) 

我不确定这是否适用于这个程序集,因为这是一个 COM 互操作程序集,所以我认为您可能必须使用 COM 来访问它,但它可能会。

编辑:

您可能最好使用记录在案的方法来执行此操作:

通过主互操作程序集定位 Office 应用程序应该是一个不错的起点

于 2010-02-22T10:35:28.080 回答
0

为什么不添加对程序集的引用?乍一看,您还有一个拼写错误,您在 microsoft.office.interop 中用 2 c 拼写了 office,如果您复制并粘贴代码,这可能就是为什么。

以下是我使用 excel COM 的方法:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelApp = new Excel.ApplicationClass();

编辑:

我也可以看到你有命名空间问题。命名空间 Excel 不存在,因为您之前注释掉了 Excel 命名空间,因此以下内容本身应该可以工作。

Microsoft.Office.Interop.Excel.ApplicationClass excel = null;

没有:

Excel.officce.interop.excel.applicationClass excel= null
于 2010-02-22T11:27:43.223 回答