1

私のプロジェクトの 1 つでは、ユーザーに PHPExcel を使用して情報を Excel ファイルに「エクスポート」させています。それが機能するとき、それは完全に機能します。また、実際にファイルを開くことができるのは一部の人だけです。

作成されたエクスポートを保存する必要があるため、それらはサーバーに保存され、作成されたファイルは readfile() を使用してダウンロードされます。それが機能しない場合 (現在はほとんどの場合)、「ファイル形式が正しくありません」というエラーが表示されます。本当に奇妙なことは、ファイルが保存されているため、同じファイルを再度ダウンロードできることです。その後、動作します。

最終的な保存とダウンロードのコードは次のとおりです。

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

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//$objWriter->save('php://output');
$objWriter->save('../project_files_images/created_exports/'.$Temp_Export_File_Name);
readfile('../project_files_images/created_exports/'.$Temp_Export_File_Name);
exit;

私が見逃しているこのコードに何か問題がありますか? この問題は、Office の最新バージョン (Mac または Windows) のユーザーに最もよく現れる傾向があります。

入力していただきありがとうございます。

4

1 に答える 1

0

マークのヒントは正しかった。これに遭遇する可能性のある他の人のために、これが何が起こっていたかです.

PHPExcel には、何らかの理由で「作成者」フィールドと「最終更新者」フィールドが必要ですが、私はそれらを使用していません。これら 2 つの項目を参照する PHPExcel コード内の 2 行のコードをコメントアウトしただけです。

保存されたファイルではなく、強制されたファイルに影響を与えた理由はまだ説明されていませんが、私が実行している理論はこれです。

  1. 保存されたファイルは、すべてのヘッダー情報が設定されて保存されたものです。
  2. 強制ファイルには、ファイルの先頭に印刷されたエラーが何らかの形で含まれていました。
于 2012-12-08T07:17:37.020 に答える