Assuming that your users will have Excel installed, you need to set the right content-type header for the file. The page will (or at least should) open in Excel rather than in the browser. (The old Office Web Components method where Excel would open as an ActiveX container inside Internet Explorer on Windows went away a decade ago.) But that will only work with things like formulas and signed macros that already have permissions set; untrusted macros won't run.
Honestly, the best possible thing you could do is to investigate whether a Google Docs spreadsheet can do the job you want you Excel sheet to do. It will run in everything except Opera Mini and IE older than 8 (as long as the user doesn't have JS disabled). You don't need to worry about operating systems. You don't need to have the user re-upload the file after using it. (Excel sheets may be "live" on the user's workstation, but that's only because they've downloaded and opened the file. If you want to get the data back, they have to send it to you somehow, and File->Save doesn't save back to the web server.)