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 へのパスがわかっている場合は、dll から直接型を取得することもできます。

Activator.CreateInstance(assmblyFileName, typeName) 

これは COM 相互運用アセンブリであるため、このアセンブリで機能するかどうかはわかりません。そのため、COM を使用してアクセスする必要があるかもしれませんが、そうなる可能性があります。

編集:

これを行うには、文書化された方法を使用することをお勧めします。

プライマリ相互運用機能アセンブリを介したターゲット オフィス アプリケーションは、開始するのに適した場所です。

于 2010-02-22T10:35:28.080 に答える
0

アセンブリへの参照を追加しないのはなぜですか? また、一見したところ、スペル ミスがあります。microsoft.officce.interop で office を 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
于 2010-02-22T11:27:43.223 に答える