Edit
Please see also How do I properly clean up Excel interop objects?. I recently came across this question, and it provided a lot of insight into
No. You don't have to release a single COM object. See this answer: Clean up Excel Interop Objects with IDisposable
To sum up the answer: The garbage collector will take care of them when it feels like it except if your program crash. What you need to be aware is:
Now if you want to release all COM object right after your method call ended, then you can Simply call
GC.Collect();
GC.WaitForPendingFinalizers();
But you need to call this OUTSIDE the method who created the COM object. Again, this might not work as expected if you are debugging the app but it will work in Release mode.