Here's a second way. If you look at ASPTODAY.com
and search the site for "excel" you'll find the entire aticle with 3 different methods heres #2
Method Two: "Comma Separated Values (CSV)"
A comma separated values file is a second alternative to exporting a web page to an Excel-readable format. This format offers a bit more flexibility then the ContentType property. CSV also offers two big advantages over the other methods; firstly you do not need any special software on the client or the server to create it, and secondly, the files tend to be smaller than a native Excel file.
The CSV format is defined as follows : commas delimit the columns and a carriage return separates the rows . Commas, as separators, can pose a problem with fields that contain commas (such as $1,234); this will cause an extra column in the row to be created. This problem can be remedied easily by wrapping the field with commas on each end.
We can see how to create a CSV file by walking through the function CreateCSVFile() from the sample provided.
Line 1: strFile = GenFileName()
Line 2: Set fs = CreateObject("Scripting.FileSystemObject"

Line 3: Set a = fs.CreateTextFile(server.MapPath("."

& "\" & strFile & Line 4: ".csv",True)
Line 5: If Not oRS.EOF Then
Line 6: strtext = chr(34) & "Year" & chr(34) & ","
Line 7: strtext = strtext & chr(34) & "Region" & chr(34) & ","
Line 8: strtext = strtext & chr(34) & "Sales" & chr(34) & ","
Line 9: a.WriteLine(strtext)
Line 10: Do Until oRS.EOF
Line 11: For i = 0 To oRS.fields.Count-1
Line 12: strtext = chr(34) & oRS.fields(i) & chr(34) Line 13: & ","
Line 14: a.Write(strtext)
Line 15: Next
Line 16: a.Writeline()
Line 17: oRS.MoveNext
Line 18: Loop
Line 19: End If
Line 20: a.Close
Line 21: Set fs=Nothing
Line 22: Response.Write("Click <A HREF=" & strFile & ".csv>Here</A> to Line 23: to get CSV file"
The first line creates a unique filename by calling the function GenFileName() which we will discuss later.
Lines Two through Four , create the textfile to be written to, using the FileSystemObject object and CreateTextFile function. This sample writes the files in the same directory as the source file, you may want to create a separate directory to hold these files in a real production application.
Lines Five through Nine , will produce the headers for the first row. I have hard-coded the column names because the report is always the same, though it is possible to read database column names and use them instead. Notice how I have included the comma between each field. The use of the WriteLine function sends them to the file along with a carriage return.
Lines Ten through Eighteen loops through the recordset and place quotation marks around each field, followed by a comma. The Write function then sends each field to the file. A WriteLine completes each row with the carriage return.
The last few lines simply close the file, releases the objects and places a link on the webpage so it can be retrieved.
When you click on the link generated, you are prompted with the Save or Open dialog. If you choose Open , the file will be opened in Excel (provided that it is installed on the computer). If you choose Save , you can save the text file to a storage device and import it into a variety of applications.
Good Luck
HTH