こんにちは。
めちゃめちゃ簡単な話なのですが、自分の知識がアップデートされたのでメモ代わりに書いときます。
お仕事でめちゃんこ久しぶりにphpspreadsheetを使うことになりまして、テンプレートとなるエクセルファイルを管理画面からダウンロードさせるような機能を作りました。
そこで、いままでheaderで指定するContent-Typeを application/vnd.ms-excel
としていたのですが、これは Excel2003以前のExcelである「xls」のものでした。
冒頭で話したとおりめちゃんこ久しぶりに触ったので、作るに当たって思い出すためにぐぐったら発見しました。
Excel2007以降のExcelのContent-Typeは application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
でした。
なげぇ。。。
コードだとこんな感じ。
$template_path = PROJECT_DIR . '/resource/template.xlsx'; $filename = 'template.xlsx'; $extension = pathinfo($template_path)['extension']; $file_size = filesize($template_path); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header("Content-Length: {$file_size}"); header("Content-Disposition: attachment; filename='{$filename}.{$extension}'"); readfile($template_path);