Como liberar o processo do excel?

Estou usando a interoperabilidade do Excel e parece estar criando um processo toda vez que eu ligo

new Microsoft.Office.Interop.Excel.Application() 

E nunca terminando o processo mesmo que eu chame

 xlApp.Quit(); 

Como posso fazer com que os processos terminem?

Você está liberando todas as suas referências? (O que significa que você tem que salvá-los em primeiro lugar).

Por exemplo, aqui está o que está em meu dispor de algum excel interop ():

  public void Dispose() { if(!this.disposed) { if(cell != null) Marshal.FinalReleaseComObject(cell); if(cells != null) Marshal.FinalReleaseComObject(cells); if(worksheet != null) Marshal.FinalReleaseComObject(worksheet); if(worksheets != null) Marshal.FinalReleaseComObject(worksheets); if (workbook != null) { workbook.Close(false, Type.Missing, Type.Missing); Marshal.FinalReleaseComObject(workbook); } Marshal.FinalReleaseComObject(workbooks); xlApp.Quit(); Marshal.FinalReleaseComObject(xlApp); GC.Collect(); GC.WaitForPendingFinalizers(); disposed = true; } } 

(Não tenho certeza se isso é perfeito, mas funcionou para mim!)

O Excel não será encerrado se você não liberar os Objetos COM usados.

Esta resposta deve fornecer mais informações.

Na maioria das vezes isso acontece porque você modificou o documento e o Excel está aguardando algum salvamento. Tente algo como:

 ObjWorkBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges, Type.Missing, Type.Missing); 

antes de sair