1
我有下面的代碼塊:使用C#互操作不關閉Excel進程執行之後
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(this.pathToFile);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
我推xlRange到一個數組:
someArray = (System.Object[,])xlRange.Value2;
然後我嘗試清理用:
Marshal.ReleaseComObject(xlRange);
Marshal.ReleaseComObject(xlWorksheet);
xlWorkbook.Close();
Marshal.ReleaseComObject(xlWorkbook);
xlApp.Quit();
Marshal.ReleaseComObject(xlApp);
但是,即使所有四個excel對象都以Marshal
發佈,該進程保持打開狀態並阻止文件再次打開。
有關如何正確清理excel對象的任何想法?
海一看[在回答這個問題(http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects?rq=1)您的問題是您正在使用Workbook.Open,請嘗試Excel.Workbooks xlWorkbooks = xlApp.Workbooks,Excel.Worbook = xlWorkbooks.Open(this,pathtofile);然後確保添加發布工作簿,並將null設置爲空並運行垃圾收集器。與您的工作表和工作表相同。使用com對象從不在右側有2個點。 – user2140261
我想這是一個類似的問題http://stackoverflow.com/questions/6960693/excel-process-doesnt-get-closed。 你有沒有嘗試在那裏建議的解決方案? – Uroboros