Я столкнулся с этой проблемой и убедился, что вызвал метод Close () для всех объектов Workbook и Workbooks, а также метод Quit () для объекта приложения Excel. Я также вызываю System.Runtime.InteropServices.Marshal.ReleaseComObject для каждого экземпляра объекта Excel. Я делаю все это в порядке, обратном возрасту, поэтому самый новый объект очищается первым, а самый старый, который является объектом приложения, заботится о последнем. Я не знаю, действительно ли заказ имеет значение, но кажется, что это возможно.
Я видел примеры, когда GC.Collect () вызывался в самом конце, но мне никогда не приходилось делать это, чтобы завершить процесс excel.exe.