<p>How do I write an Excel workbook to a <code>MemoryStream</code> without first saving it to the file system?</p>

<p>All options within the <code>Microsoft.Office.Interop.Excel.WorkBook</code> save options take a filename.</p>

I have done extensive work with the PIA and with storing Excel files in a document repository and streaming it out to the browser, and I have not been able to find a solution to using the PIA without first writing the contents to the file system first.
I think that you are going to have to swallow the bullet and deal with the file system as an intermediary.  The good news is that you can just give the file a unique name like a guid or use some other tempfilename method (not sure if one exists in .net) and just delete the contents when you are done.