I have been spending (wasting?) my time trying to stream dynamically generated CSV content straight into Excel from a browser.
Things I wish I had known at the start.
Content-Disposition: attachment; filename="blah.csv"as a header.
Still, got it working eventually, and I’m happier for being able to say I know how to do it now.