Нашел вот такой сниппет для работы с ёкселем:
// Open document.
Application app = new ApplicationClass();
Workbook book = app.Workbooks.Open(path,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
Worksheet sheet = (Worksheet)book.Worksheets[1];
... работаем ...
// Save, close and free memory.
book.Save();
book.Close(false, null, null);
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
GC.GetTotalMemory(true);
После выполнения этого метода в разных потоках, Excel иногда остается висеть в процессах. По нескольку штук набирается. Подскажите, как грамотно сделать его синглтоном, чтобы подключаться к уже запущенному экземпляру. Один пусть висит, не страшно. Ну, или чтоб гарантированно прибивать все экземпляры.