If you are using SAS/IntrNet, you must be writing to _webout -- is that correct??? Have you ever changed the APPSRV_HEADER to change the HTTP content-type of the stream that you are sending back to the client???
David was pointing you in the right direction with tagsets.msoffice2k -- but with SAS/IntrNet, you'd have to do a bit more work.
First, you have to decide whether you 1) want all the ODS styles in Excel or 2) whether you want to send the users a plain CSV file.
Then you have to decide whether you 1) want to show them the report and then put a button on the report where they will initiate the download or 2) when they click on the report link, you will run the report and automatically send the results back as either CSV or HTML.
Remember that _webout is a pipeline between the web server and the web browser. Normally, when you use ODS with _webout, what comes down that pipeline is HTML content and so SAS/IntrNet automatically generates the correct HTTP header (also known as a content-type header or MIME header).
If you would use the tagsets.msoffice2k type of output with _webout, then you would not need a content type header, because it is Microsoft HTML -- the issue however is that the file would open in a browser. If you want the file to be opened by Excel, instead, then you would have to (inside you program) make sure that the APPSRV_HEADER function sent the content-type header for the browser to launch Excel when it received the file.
If you use ODS CSV to send plain CSV from the server to the client machine with SAS/Intrnet, I think you still need to send the right header for Excel to launch.
You can find some examples of using APPSRV_HEADER with SAS/IntrNet here:
[pre]
http://support.sas.com/rnd/web/intrnet/dispatch/
http://support.sas.com/rnd/web/intrnet/dispatch/srvhead.html
[/pre]
cynthia