C #: ¿Cómo puedo abrir y cerrar un libro de Excel?
-
20-09-2019 - |
Pregunta
¿Alguien sabe cómo sólo tiene que abrir y cerrar un libro de Excel?
No necesito leer los datos desde el archivo, sólo hay que abrir y cerrarla. (*)
supongo que voy a tener que hacer referencia al ensamblado Microsoft.Office.Interop.Excel.
* Motivo: Yo ya he configurado datos de esta tabla pivote con una biblioteca tercera parte (Aspose). Ahora tengo que leer la tabla dinámica generada.
Por desgracia, la biblioteca Aspose no puede generar la tabla dinámica en tiempo de ejecución. Se necesita a alguien que abrir el archivo con Excel por lo que Excel puede generar los valores de la tabla pivote.
Solución
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);
}
Otros consejos
Una búsqueda rápida en Google me da este proyecto de código en:
Considere el uso de System.Diagnostics.Process para iniciar, supervisar y cierre Excel. Este sitio ofrece una buena introducción: http://www.thescarms.com/dotnet/Process.aspx , como correr con una ventana invisible y el envío de la entrada a la misma.