PC -
I suggest creating a link to an excel file you create on your server as the page processes using FileSystemObject.
When your page is done with the display, you will display a link to your excel file that the user can open and also display a link to email that file to an email address input by the user.
There is always a catch however, in that unless you use Office Web Components (not covered here), formatting for the output to the Excel file is non-existent; but with some creative SQL, your result set can be formatted in a very readable fashion.
On your display page, you could create a sub routine such as:
Sub XLFiles()
'Calc date for file
mydt = ""
For x=1 To Len(Date())
if mid(cstr(Date()),x,1) <> "/" then
mydt = mydt & mid(cstr(Date()),x,1)
end if
Next
'Calc time for file
mytm = ""
For x=1 To (Len(Time())-3)
if mid(cstr(Time()),x,1) <> ":" then
mytm = mytm & mid(cstr(Time()),x,1)
end if
Next
nRandom = mydt & "-" & mytm
filePath = Server.mapPath("\XLFiles"

----> XLFiles will be a directory off your Web server root
Response.Write "<h3 style=""color: blue"">" + "Data File Download - ResultsName<br><small>This will take a moment to generate... " _
& "When Excel opens - <br> " _
& "1) From the top menu, choose File/Save As <br>" _
& "2) In the Save In entry box: choose a directory on your PC<br>" _
& "3) In the File Name entry box: enter any name you want<br>" _
& "4) In the Save As Type entry box: select Microsoft Excel</small></h3><p>"
rst.open dtl, CommConn, 3, 1
----> rst = Recordset already returned from your ASP code
fileExcel = "FileName-" & CStr(nRandom) & ".xls"
filename = filePath & "\" & fileExcel
Set fs = Server.CreateObject("Scripting.FileSystemObject"

Set MyFile = fs.CreateTextFile(filename, True)
MyFile.writeline "TITLE"
MyFile.writeline " "
strLine=""
For each x in rst.fields
strLine= strLine & x.name & chr(9)
Next
MyFile.writeline strLine
Do while Not rst.EOF
strLine=""
For each x in rst.Fields
strLine= strLine & x.value & chr(9)
Next
MyFile.writeline strLine
rst.MoveNext
Loop
'Clean up
rst.close
MyFile.Close
set rst=nothing
Set MyFile=Nothing
set fs=Nothing
'Show a link to the Excel File
link="<A HREF=" & "\XLFiles\" & fileExcel & " target='1'>Download The XL Data</a><p><br>"
Response.write link + "<br><br>"
'Show a link to the Email page
link = "<A HREF=" & "\EmailXL.asp?fnm=" & fileExcel & " target='1'>Email The XL Data</a><p><br>"
Response.write link
End Sub
Call this sub after you have your recordset.
The email portion would involve passing the XL Filename via another Link - that link displaying another ASP page that would take an email address and have a "send" button to send the email. The code for the link is above already and will pass the XL filename via a querystring.
I'll leave it to you to write the email address input asp page. Creating and sending the email is a piece of cake with CDONTS. From your email address input screen, you can post to another asp page or just post to the same page - from there you need to pass the XL filename received originally in the querystring (request.querystring("fnm"

)and the email address input by the user.
Here is sample code that could send an email:
set htmlcdont = server.createobject("CDONTS.NewMail"

htmlcdont.From = "someone@somewhere"
htmlcdont.To = "someone@somewhere"
htmlcdont.Cc = "someone@somewhere"
htmlcdont.Subject = "XL data file"
htmlcdont.AttachFile"d:\
---> you need to use the physical path/filename
htmlcdont.BodyFormat = 0
htmlcdont.MailFormat = 0
htmlcdont.Body = "Find the XL file attached"
htmlcdont.Send
set htmlcdont = nothing
Hope this helps