Делал по этой workaround
инструкции . Проблем с повисшими процессами не имею (в день не сервере до 3хтыс запусков процессов).
Суть в том, что каждый экземпляр COM (workbook, worksheet, Item, Ragne и т.д.), который вы использовали (даже, если не сохраняли ссылку в переменную), нужно пропустить через while (System.Runtime.InteropServices.Marshal.ReleaseComObject(comObjToRelease) > 0);