title: Excel process remains open after interop; traditional method not working
body: <p>I'm running into an issue with some code I'm debugging. Excel interop is used to extract some values from a workbook; however, Excel remains open after the program has exited. I've tried the traditional solution, but it still keeps a reference to Excel open on all machines where the code is run</p>
  
  <pre><code>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);
      }
  </code></pre>
  
  <p>Even this simple piece of code keeps the process running with multiple files (xlsm, xlsx, xls). Right now we have a workaround in place to kill the Excel processes we've opened, but I'd much rather get this working for my own sanity.</p>
  
  <p>I should add that I have it narrowed down to the <code>Workbook</code> variable. If I remove the call to <code>books.Open()</code> and all references to <code>book</code> then it closes successfully.</p>