2009-10-06 7 views
6

Кто-нибудь знает, как просто открыть и закрыть книгу Excel?C#: Как открыть и закрыть книгу Excel?

Мне не нужно читать данные из файла, мне просто нужно открыть и закрыть его. (*)

Я предполагаю, что мне нужно будет ссылаться на сборку Microsoft.Office.Interop.Excel.


* Причина: Я уже настроил информацию о сводной таблице с помощью сторонней библиотеки (Aspose). Теперь мне нужно прочитать сгенерированную сводную таблицу.

К сожалению, библиотека Aspose не может генерировать сводную таблицу во время выполнения. Ему нужен кто-то open the file with Excel, чтобы Excel мог генерировать значения сводной таблицы.

ответ

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.Quit()', чтобы окончательно заблокировать, чтобы закрыть приложение excel. – arthur

0

Рассмотрите возможность использования System.Diagnostics.Process для запуска, мониторинга и закрытия Excel. Этот сайт дает хорошее введение: http://www.thescarms.com/dotnet/Process.aspx, включая запуск с невидимым окном и отправку ввода на него.