title: Excel interop COM doesn't close
body: <p>I have some code that opens a spreadsheet, reads some values, and then closes the sheet.  I need to do this for multiple files.  The problem I'm having is that the Excel application instance is not exiting, therefore when I run my process for several files, I end up with several excel.exe processes running.  Any ideas how I get Excel to close?</p>
  
  <pre><code>    static void ParseFile(string file)
      {
          try
          {
              System.Console.WriteLine("parsing:" + file);
              Excel.Application excel = new Excel.Application();
              Excel.Workbook wb = excel.Workbooks.Open(file);
              Excel.Worksheet ws = wb.Worksheets[1];
              for (int i = 2; i &lt; 27; i++)
              {
                  log(ws.Cells[i, 1].Text);
              }
              wb.Close(false);                
              excel.Quit();
              excel = null;
              ws = null;
              wb = null;
          }
          catch (Exception ex)
          {
              log(ex.Message);
          }
      }
  </code></pre>
  
  <p>------Update 12/11/12--------Still leaving excel instances open-------</p>
  
  <pre><code>static void ParseFile(string file)
      {
          try
          {
              log("parsing:" + file);
              Excel.Application excel = new Excel.Application();
              Excel.Workbook wb = excel.Workbooks.Open(file);
              Excel.Worksheet ws = wb.Worksheets[1];
      //do some stuff here
              wb.Close(false);
              excel.Quit();
              GC.Collect();
              GC.WaitForPendingFinalizers();
              Marshal.FinalReleaseComObject(ws);
              Marshal.FinalReleaseComObject(wb);
              Marshal.FinalReleaseComObject(excel);                
              excel = null;
              ws = null;
              wb = null;
              System.GC.Collect();
          }
          catch (Exception ex)
          {
              log(ex.Message);
          }            
      }
  </code></pre>