On an .aspx page in a web site I need to retrieve some data from a sql server database and, instead of displaying it in a Gridview, I need to put the data in a spreadsheet and present the user with a Save As dialog.

I'd prefer to do it without using the Office / Excel / Interop com object - so, from what I've read so far, I can do this by returning XML data from SQL Server?

Normally I get data from SQL Server and populate a dataset or datareader with it - and then use this as the Datasource of a GridView.

If I run this in SQL Server ...

Code:
SELECT UserID, UserName FROM tblUsers FOR XML Auto, Root('Users')
it produces this ...

Code:
<Users>
  <tblUsers UserID="1" UserName="Steve" />
  <tblUsers UserID="2" UserName="Andrea" />
  <tblUsers UserID="3" UserName="Zebedee" />
</Users>
So, first question - how do I get the data from SQL Server into my .aspx page? (All data access is done with stored procedures - so, from my data access class normally I create, for example, a SQLDataReader and populate it by calling a stored procedure. What object would I populate with the results of a stored procedure that contains a select statement with 'FOR XML Auto'

Then, assuming I get the XML into the .aspx page - how do I get it into a spreadsheet so that there are two columns called UserID and UserName and 3 rows with 1, 2 and 3 in the first cell and Steve, Andrea and Zebedee in teh second cell?

Thanks for any help. I've looked at loads of articles and am getting nowhere fast.