One option would be to create a CSV file, which Excel can read.
If the HTML output is a table, I've also seen one approach of saving the page via the browser and give it an .xls file extension. Excel seems to be able to open and read this. Not exactly a "pretty" solution, but it seems to work. (Not advocating this route. Just tossing out ideas.)
If the web server happens to be on a Windows system that has Excel installed, you could also use Win32::OLE to control Excel to create the Excel file for download. Otherwise, my guess is that Corion's suggestion maybe the best route to go.