気持ちが良いIT技術を学ぶ

Excelの拡張子が'.xlsx'の場合、'.xls'でダウンロードすると ファイルを開く時にメッセージが出る場合

2023年07月24日に更新, By 管理者

.xlsx形式はExcelの新しいフォーマットであり、.xls形式は古いフォーマットなので新しいフォーマットから古いフォーマットに変更する際に、情報の一部が失われる可能性があるため、Excelは警告メッセージを表示されます。

- Windows では「保護されたビュー: このファイルに問題が見つかりました...」
- Macbook では「ファイルエラー: このファイルに問題が見つかりました...」

この場合、ファイルのダウンロード時にフォーマットを変更する事で解決が可能です。

例えば、PHPでファイルをダウンロードする場合、以下のようにContent-Dispositionヘッダを使用してファイルのダウンロードをできます。

- ダウンロードする部分の形式の変更

・修正前

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="download.xls"');
header('Cache-Control: max-age=0');

$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save('php://output');

・修正後

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="download.xlsx"');
header('Cache-Control: max-age=0');

$writer = PHPExcel_IOFactory::createWriter($book, "Excel2007");
$writer->save('php://output');


上記の例では、.xlsxファイルのContent-Typeを設定し、ファイルをダウンロードする際にダイアログでdownload.xlsxとして保存されるようにします。ユーザーはダウンロードしたファイルをExcelで開くことができます。