PHP で Excel ファイルを読み取り、その内容をクライアントに送信したいと考えています。私が本当にやりたいことは、コンテンツ タイプを変更することです。他の html ヘッダーは、コンテンツを表示する代わりに、ブラウザにファイルをダウンロードさせます。すべて問題なく、ユーザーはファイルをダウンロードできますが、ファイルを開こうとすると、コンテンツが正しい形式と形状で表示されません。私の頭に浮かぶのは、ユニコード文字列で応答を送信するべきではなく、Excelがそれを認識できるバイナリ形式で送信する必要があるということです。これは私の現在のコードです:
$filename = $_GET['file'];
$ext = $_GET['type'];
$filename .= '.' . $ext;
$path = "../generatedReports/" . $filename;
header('Content-type: application/vnd.ms-excel;');
header('Content-Disposition: attachment; filename=' . $filename);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public", false);
header("Content-Description: File Transfer");
header("Accept-Ranges: bytes");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($path));
$size = filesize($path);
$f = fopen($path, 'r');
$content = fread($f, $size);
echo $content;
解決策はありますか?