もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

phpでExcelファイルのダウンロード

こんにちは。

めちゃめちゃ簡単な話なのですが、自分の知識がアップデートされたのでメモ代わりに書いときます。

お仕事でめちゃんこ久しぶりに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);