2009-10-06 17 views
6

誰でも簡単にExcelブックを開いて閉じる方法を知っていますか?C#:Excelワークブックを開いたり閉じたりするにはどうすればいいですか?

ファイルからデータを読み取る必要はありません。ファイルを開いて閉じてください。 (*)

Microsoft.Office.Interop.Excelアセンブリを参照する必要があると思います。


*理由:サードパーティのライブラリ(Aspose)でピボットテーブルの情報を設定済みです。今私は生成されたピボットテーブルを読む必要があります。

残念ながら、Asposeライブラリは実行時にピボットテーブルを生成できません。 open the file with Excelに誰かが必要なので、Excelはピボットテーブルの値を生成できます。迅速なGoogleが私にこのコードでプロジェクトを与える

答えて

8

Microsoft.Office.Interop.Excelも最終的にクリーンアップするようにしてください参照した後。

using Excel = Microsoft.Office.Interop.Excel; 

     Excel.ApplicationClass _Excel; 
     Excel.Workbook WB; 
     Excel.Worksheet WS; 

    try 
     { 

     _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); 
     WB = _Excel.Workbooks.Open("FILENAME", 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 

      //do something 

     } 
     catch (Exception ex) 
     { 
      WB.Close(false, Type.Missing, Type.Missing); 

      throw; 
     } 
     finally 
     { 
      GC.Collect(); 
      GC.WaitForPendingFinalizers(); 

      System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB); 

      System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel); 


     } 
+0

これを実装する際にエラーが発生しました。Microsoft.Office.Interop.Excel.ApplicationClass型のコンストラクタは定義されていません。訂正のためにこれを参照してください。 http://stackoverflow.com/questions/14016264/microsoft-office-interop-excel-applicationclass-has-no-constructor-defined – Desmond

+1

また、Excelのアプリケーションを閉じるためにブロックするために '_Excel.Quit()'を追加します。 – arthur

0

Excelの起動、監視、および閉じるには、System.Diagnostics.Processを使用することを検討してください。このサイトでは、イントロビュータにhttp://www.thescarms.com/dotnet/Process.aspxと表示されています。表示されないウィンドウで実行し、入力を送信します。

関連する問題