PHPExcelを使用して、PHP アプリケーション内でその場で Excel ファイルを生成しています。フォーマットを使用していExcel2007
ます。
ユーザーが Excel ファイルを作成してダウンロードを強制する URL にアクセスすると、モバイル Safari (iPhone および iPad) を除くすべてのブラウザーですべてが正常に機能します。
ここに私のヘッダーとreadfile
メソッドがあります:
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-disposition: attachment; filename=' . $file_name . '.xlsx;');
header('Content-Length: ' . filesize($path_to_file . '.xlsx'));
readfile($path_to_file . '.xlsx');
モバイル Safari で .xlsx ファイルをダウンロードするはずの URL を参照すると、ファイルの各ワークシートを表すタブが実際に表示されますが、実際のデータは次のようには表示されません。
さらに、これに遭遇した2つの奇妙な動作があります。
- このファイルをデスクトップ ブラウザにダウンロードして自分宛にメールで送信し、iOS のメール アプリで開くと、ファイルは正しく表示されます。
- その後、その添付ファイルを iOS のメール アプリから取得して、たとえば Dropbox にインポートすると、適切に表示されません (上のスクリーンショットと同じように表示されます)。
- Chrome では、ファイルは適切にダウンロードされ、期待どおり Excel または Numbers で開かれますが、コンソールには次のメッセージが表示されます。
Resource interpreted as Document but transferred with MIME type application/vnd.ms-excel:
また、PHPExcelのドキュメントに従って、代わりにreadfile
私も試しました:
$objWriter->save('php://output');
ただし、モバイル Safari では次のようなエラーが発生します。
OfficeImportErrorDomain Error 912
を他の値 (またはなど)Content-type
に調整して実験した問題を排除するために。残念ながら (驚くべきことではありませんが)、それらも機能しません。Content-type
application/vnd.ms-excel
application/download
どんなガイダンスも大歓迎です。