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で開くことができます。