in reply to creating xls files for download

A nice trick you can do here is to make use of the fact that Excel can open HTML files.

Try this: Make your report in HTML as usual (probably just a bit simpler on the design side), save the source from your browser, rename the file to ".xls" and see how it looks in Excel. Chances are that it looks better than what you could achieve (without a lot of effort) trying to write a CSV or XLS.

If you like what you see, have your download.cgi serve this HTML file with these headers:

Content-type: application/vnd.ms-excel Content-Disposition: attachment; filename=report.xls