Tengo un problema con un código que estoy depurando. La interoperabilidad de Excel se usa para extraer algunos valores de un libro de trabajo; sin embargo, Excel permanece abierto después de que el programa haya salido. He intentado la solución tradicional, pero todavía mantiene una referencia a Excel abierto en todos los equipos donde se ejecuta el códigoEl proceso de Excel permanece abierto después de la interoperabilidad; El método tradicional no funciona
private void TestExcel()
{
Excel.Application excel = new Excel.Application();
Excel.Workbooks books = excel.Workbooks;
Excel.Workbook book = books.Open("C:\\test.xlsm");
book.Close();
books.Close();
excel.Quit();
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
Marshal.ReleaseComObject(excel);
}
Incluso esta simple trozo de código mantiene el proceso en ejecución con múltiples archivos (xlsm, xlsx, xls). En este momento tenemos una solución para eliminar los procesos de Excel que hemos abierto, pero prefiero que esto funcione por mi propia cordura.
Debo añadir que lo tengo reducido a la variable Workbook
. Si elimino la llamada a books.Open()
y todas las referencias a book
, se cierra con éxito.
Tu código funcionó cuando lo probé, ¿podrías estar obteniendo una excepción en el momento de la ejecución que causa el problema? – msmucker0527