3

私は、Excel を動的に操作するこの道を探求したいと考えています。


dll などを含めずに、C# アプリケーションで Excel を使用したいと考えています。まず、必要な Excel バージョンがインストールされているかどうかを確認して実行します。

まず、必要なすべてのタイプを取得したいのですが、それらを取得できません:

// works
Type typeExcel = Type.GetTypeFromProgID("Excel.Application");
object excel = Activator.CreateInstance(typeExcel);
object workbooks = typeExcel.InvokeMember("Workbooks", BindingFlags.GetProperty, null, excel, null);

// this doesn't work, returns null
Type typeWorkbooks = Type.GetTypeFromProgID("Excel.Workbooks");

正しい型がないと、メンバーを呼び出すことができません。それで、私は何を間違っていますか?必要なすべてのタイプをロードし、それらがそこにあることを知るにはどうすればよいですか? 私の現在のエクセルのバージョンは2003です。


理由:ターゲット システムにインストールされていない COM ライブラリを含めると、アプリケーションが起動しません。それらを動的にロードすると、それらの存在を確認し、不足している機能についてユーザーに通知できます。

4

2 に答える 2

7

を使用しdynamicます。

Type typeExcel = Type.GetTypeFromProgID("Excel.Application");

dynamic excel = Activator.CreateInstance(typeExcel);
excel.Visible = true;

dynamic workbooks = excel.Workbooks;
workbooks.Add();
workbooks.Add();

この回答も参照してください。

于 2013-09-26T08:41:25.190 に答える