我正在尝试动态加载程序集并创建其类型的变量:
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类型的变量(这是我需要创建的类型)
任何帮助都会很棒 谢谢
答案 0 :(得分:2)
我不确定这适用于该程序集,但一般情况下,您可以通过从程序集中获取类型然后使用Activator.CreateInstance创建实例来执行此操作:
Type type = assembly.GetType("MyType");
object instanceOfMyType = Activator.CreateInstance(type);
您需要知道要创建的类型的名称('Excel.Application'?)
如果你知道它的路径,你也可以直接从dll获取类型:
Activator.CreateInstance(assmblyFileName, typeName)
我不确定这会对这个程序集起作用,因为这是一个COM互操作程序集,所以我认为你可能必须使用COM来访问它,但它可能会。
编辑:
您可能更好地使用记录的方法来执行此操作:
Target Office Applications Through Primary Interop Assemblies应该是一个开始的好地方
答案 1 :(得分:0)
为什么不添加对程序集的引用?乍一看,你有一个拼写错误,你在microsoft.officce.interop拼写办公室2 c,这可能是你复制和粘贴代码的原因。
以下是我如何使用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