Excel handles html in its native format. It will render any style attributes that are embedded in the html output. Your xsl simply outputs the xml as you wish it to look in Excel but as html.
To handle the opening of the file we used the following statement in our jsp:
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","inline; filename=bscreport.xls;");
Find more information on this on microsoft.com by searching for, "Microsoft Excel Web Connectivity Kit."
A word of caution on css: Excel doesn't interpret css statements. style attributes must be within the html tags. Excel also "interprets" the data and will automatically apply different formatting to cells that have "$" content vs. cells that have numbers.
Excel has a few other style classes that it will interpret. These are defined in the toolkit documentation.
Good luck,
Lorie Gibbons