Делаю Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
try
{
Excel.Workbook ObjWorkBook;
Excel.Worksheet ObjWorkSheet;
ObjWorkBook = ObjExcel.Workbooks.Open(ExcelFile, 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);
ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.ActiveSheet;
... ТУТ ПЫТАЮСЬ ЗАКРЫТЬ EXCEL
//ObjWorkSheet = null;
//ObjWorkBook.Save();
ObjWorkBook.Close(false, false, Type.Missing);
}
finally
{
ObjExcel.Quit();
//ObjExcel.ExecuteExcel4Macro("Quit");
//System.Runtime.InteropServices.Marshal.ReleaseComObject(ObjExcel);
ObjExcel = null;
}
Но процесс всё равно остаётся висеть (, завершаться не хочет. Если обновить страницу, запустится ещё один процесс Excel.
Как сделать так, чтобы процесс убивался, когда код отработал?
Win 2003 + IIS
Работай так, чтобы Великий Учитель Dimon aka одобрил, и AL похвалил!
1. Двойной вызов Collect есть. это твоя ToExcel и после неё ещё вызов.
2. Сомневаюсь, что кто-то одобрил бы двойной вызов Collect'а
3. Если упростить процедуру, то Эксель закрыв
Данное сообщение получено с сайта GotDotNet.RU
|