使用Microsoft.Office.Interop.Excel时,Excel 2007保持打开状态

我知道这已经被讨论了很多,但我找不到解决scheme,可以解决我的具体问题。

我已经编写了使用Microsoft.Office.Interop.Excel.csv文件中的数据复制到.xlsb文件的代码。 我的问题是,当我使用安装了Excel 2007的计算机时,Excel进程保持打开状态。

我已经testing了与Excel 2003和2010相同的代码,一切工作正常。

解决类似问题的大多数解决scheme都提到一个参考被遗留下来,所以我减less了大部分的代码,直到我离开这个:

 class Program { static void Main(string[] args) { Excel.Application oApp = null; Excel.Workbooks oWBs = null; Excel.Workbook oWB = null; try { //Start Excel and get Application object. oApp = new Excel.Application(); // Open existing workbook oWBs = oApp.Workbooks; oWB = oWBs.Open(xlsbFile); // Save the workbook oWB.Save(); } catch (Exception theException) { String errorMessage; errorMessage = "Error: "; errorMessage = String.Concat(errorMessage, theException.Message); errorMessage = String.Concat(errorMessage, " Line: "); errorMessage = String.Concat(errorMessage, theException.Source); MessageBox.Show(errorMessage, "Error"); } finally { oWB.Close(false); while (Marshal.FinalReleaseComObject(oWB) > 0) { }; GC.Collect(); GC.WaitForPendingFinalizers(); oWB = null; oWBs.Close(); while (Marshal.FinalReleaseComObject(oWBs) > 0) { }; GC.Collect(); GC.WaitForPendingFinalizers(); oWBs = null; oApp.Quit(); while (Marshal.FinalReleaseComObject(oApp) > 0) { }; GC.Collect(); GC.WaitForPendingFinalizers(); oApp = null; } } } 

任何有关这个问题的帮助将不胜感激。