C#でEXCELを使う。

C#でEXCELオートメーションサーバーを使う~ 

EXCELのオートメーションサーバーは、もうライフワークのよう・・(^^; 

今まで、C++からEXCELオブジェクトを利用してきましたが、C#も同様にEXCELを利用できます。
C++ではVariant型にOLEインターフェースがサポートされていたのですが、C#では
EXCELのタイプライブラリを直接取り込むため、コードとの親和性が良いです。 

■準備
1 IDEのプロジェクトメニューより参照の追加を選択。
2 COMインポートタブでMicrosoft Excel を選択して追加。 
3 プロジェクトマネージャで、Referencesを見ると Excel.dll と Office.dll が追加されている。 
4 using System.Reflection; をソースに追加。 

この準備が完了すると、現在のプロジェクトで、いつでもEXCELが使用できます。 

■Excelオブジェクトを作る。 

Excel.Application exApp=new Excel.Application(); 

Excelオブジェクトの生成時に、EXCELがプロセスとして起動されます。 

■Excelの終了 

Excelを終了させるには、 

exApp.Quit(); 

Excelは、これで終了します。
しかし、Windowsのプロセスリストを見ると、Excelが残っている場合があります。
これは、アクセスしたクラス、つまり呼び出し側で、Excelオブジェクトへの参照が残っているため、
C#のガベージコレクタが働かないことによります。 
これを解決するためには、使用したExcelへの変数にNullを代入し、
強制的にガベージコレクタを動作させとよいです。 

exApp.Quit(); 
exApp=null; 
GC.Collect(); 

■Workbooks以下のオブジェクト 

Excelのオブジェクト階層は、そのまま使用可能なので、ExcelVBAのレファレンスが利用できます。
プロジェクトマネージャのReferencesで、Excel.dllをクリックするとタイプライブラリが表示されるので、
引数や戻り値の型、オブジェクトで使用できる定数等が見ることができます。 

Application        
 └Workbooks       
  └Workbook      
   └Worksheets     
    └Worksheet    
     └Range   

例) 

Excel.Workbooks wbs=exApp.Workbooks; // アプリケーションからWorkbooksの取得 
Excel._Workbook wb=wbs.Add(Missing.Value); // WorkbooksにWoekbookを作成 
Excel.Worksheet ws=wb.Worksheet; // Worksheetsの取得。 

詳しくはExcelVBAのレファレンスを参照してください。

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: