Personalmente lo que hago es crear un componente para trabajar con Excel y en esa clase heredo de IDisposable para que en el método Dispose haga la liberación de objetos de esta forma:
Código:
public void Dispose()
{
if (oApp != null)
{
oApp.Workbooks.Close();
oApp.Quit();
}
if (oRange != null) Marshal.ReleaseComObject(oRange);
if (oWorksheet != null) Marshal.ReleaseComObject(oWorksheet);
if (oWorkbook != null) Marshal.ReleaseComObject(oWorkbook);
if (oApp != null) Marshal.ReleaseComObject(oApp);
oWorksheet = null;
oWorkbook = null;
oApp = null;
GC.Collect();
}
Salu2