2009-10-06 10 views
6

Bir Excel çalışma kitabını nasıl açıp kapatacağını bilen var mı?C#: Bir Excel çalışma kitabını nasıl açıp kapatabilirim?

Dosyadan herhangi bir veri okumam gerekmiyor, sadece açmam ve kapatmam gerek. (*)

Sanırım Microsoft.Office.Interop.Excel derlemesine başvurmam gerekecek.


* Sebep: Zaten bir 3. parti kütüphanesinden (Aspose) ile pivot tablo bilgisini konfigüre ettik. Şimdi oluşturulan pivot tabloyu okumalıyım.

Ne yazık ki Aspose kütüphanesi, çalışma zamanında pivot tablosunu oluşturamıyor. Excel'in pivot tablo değerlerini oluşturabilmesi için open the file with Excel'a ihtiyacı vardır. Hızlı bir Google bana bu kodun projeyi verir

cevap

8

Microsoft.Office.Interop.Excel da nihayet temizlemek için emin olun başvurarak sonra.

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

Bunu uygularken karşılaştığım hata Microsoft.Office.Interop.Excel.ApplicationClass türü için tanımlanmış bir kurucu yoktur. Düzeltmeler için lütfen buna bakın. http://stackoverflow.com/questions/14016264/microsoft-office-interop-excel-applicationclass-has-no-constructor-defined – Desmond

+1

Ayrıca excel uygulamasını kapatmak için sonlandırmak için '_Excel.Quit()' de ekleyelim. – arthur

0

Excel'i başlatmak, izlemek ve kapatmak için System.Diagnostics.Process dosyasını kullanmayı düşünün. Bu site, görünmez bir pencere ile çalışan ve ona giriş gönderen de dahil olmak üzere iyi bir giriş sağlar: http://www.thescarms.com/dotnet/Process.aspx.

İlgili konular