ExcelファイルをPHPで生成するには、PEARのSpreadsheet_Excel_Writerを使うと簡単にできます。
生成したPHPファイルをダウンロードするには、
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls");
でヘッダを出力してから、Excelファイルの本体をシフトJISに変換してecho()なんかで出力すればいいのですが、httpsでSSLを使うとダウンロードできなくなります。ファイルの保存ダイアログも表示してきません。
いろいろ調べると、IEの問題らしい。やはり、先人の知恵がありました。
以下のように続けてヘッダを出力してあげれば解決です。
header("Cache-Control: public");
header("Pragma: public");