1

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 を参照すると、ファイルの各ワークシートを表すタブが実際に表示されますが、実際のデータは次のようには表示されません。

モバイルサファリでphpexcelの出力がありません

さらに、これに遭遇した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-typeapplication/vnd.ms-excelapplication/download

どんなガイダンスも大歓迎です。

4

1 に答える 1

0

私は使用します->addHeaderLine('Content-Type', 'application/octet-stream')。そうしないと、Safari にエラーが表示されます。このヘッダーはxlsxファイルをブラウザに表示させますが、ダウンロードはしません。モバイル Safari を強制的にダウンロードする解決策が見つかりませんでした。

于 2015-04-08T07:22:02.543 に答える