2009-10-06 99 views
6

¿Alguien sabe cómo simplemente abrir y cerrar un libro de Excel?C#: ¿Cómo puedo abrir y cerrar un libro de Excel?

No necesito leer ningún dato del archivo, solo necesito abrirlo y cerrarlo. (*)

Supongo que tendré que hacer referencia al ensamblado Microsoft.Office.Interop.Excel.


* Motivo: Ya he configurado la información de la tabla dinámica con una biblioteca de terceros (Aspose). Ahora necesito leer la tabla dinámica generada.

Desafortunadamente, la biblioteca Aspose no puede generar la tabla dinámica en tiempo de ejecución. Necesita a alguien al open the file with Excel para que Excel pueda generar los valores de la tabla dinámica.

Respuesta

8

tras hacer referencia también Microsoft.Office.Interop.Excel Asegúrese de limpiar en el fin.

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

Al implementar esto, encontré el error. No hay un constructor definido para el tipo Microsoft.Office.Interop.Excel.ApplicationClass, consulte esto para las correcciones. http://stackoverflow.com/questions/14016264/microsoft-office-interop-excel-applicationclass-has-no-constructor-defined – Desmond

+1

También agregaría '_Excel.Quit()' para finalmente bloquear para cerrar la aplicación de Excel. – arthur

0

Considere utilizar System.Diagnostics.Process para iniciar, controlar y cerrar Excel. Este sitio ofrece una buena introducción: http://www.thescarms.com/dotnet/Process.aspx, incluida la ejecución con una ventana invisible y el envío de entradas.

Cuestiones relacionadas