C#=为什么Excel进程没有结束?
发布时间:2020-12-15 06:15:10 所属栏目:百科 来源:网络整理
导读:我有以下代码: private bool IsMousetrapFile(string path) { logger.Log(validateFileMessage + path); Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Excel.Workbooks workbooks = xlApp.Workbooks; Excel.Workbook xlWo
我有以下代码:
private bool IsMousetrapFile(string path) { logger.Log(validateFileMessage + path); Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Excel.Workbooks workbooks = xlApp.Workbooks; Excel.Workbook xlWorkBook = workbooks.Open(path,Type.Missing,Type.Missing); Excel.Sheets worksheets = (Excel.Sheets)xlWorkBook.Worksheets; Excel.Worksheet ws = null; foreach (string sheet in expectedWorksheets) { try { ws = (Excel.Worksheet)worksheets.get_Item(sheet); logger.Log(validMousetrapFileMessage + path); } catch { logger.Log(validateSheetError + sheet + ": " + path); if (ws != null) Marshal.ReleaseComObject(ws); Marshal.ReleaseComObject(worksheets); Marshal.ReleaseComObject(xlWorkBook); Marshal.ReleaseComObject(workbooks); Marshal.ReleaseComObject(xlApp); return false; } } if (ws != null) Marshal.ReleaseComObject(ws); Marshal.ReleaseComObject(worksheets); Marshal.ReleaseComObject(xlWorkBook); Marshal.ReleaseComObject(workbooks); Marshal.ReleaseComObject(xlApp); return true; } 实际上,它检查Excel工作簿是否包含特定的工作表.无论是否存在,我想要Excel进程结束.但是,每次打开新的工作簿时,都会添加一个新的进程,并且不会被删除? PS.我知道有重复的代码在那里….它将很快整理:) 解决方法
使用Excel.Application.Quit()完成处理或任何你正在做的事情.
在你的情况下:xlApp.Quit(); 更新: @Lasse V. Karlsen指出了如果Excel已经在运行,该怎么办那么这里有一个解决方案:(我没有测试代码,这只是给你一个想法) private void TestMethod() { bool excelWasRunning = System.Diagnostics.Process.GetProcessesByName("excel").Length > 0; // your code if (!excelWasRunning) { xlApp.Quit(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |