Why don't you just save content of your memory stream into temporary file and process that file normally with Excel application?
See my example code:
var ms = new MemoryStream(...);
var temp = Path.GetTempPath();
var file = Path.GetFileNameWithoutExtension(Path.GetRandomFileName());
var path = Path.Combine(temp, file + ".xlsx");
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
Excel.Application excel = new Excel.Application();
excel.Workbooks.Open(path, ReadOnly: true);