PHPExcelオブジェクトにデータをロードした後、ファイルに書き込むのではなく、PHP変数に内容を直接出力したいとします。私はそれを行う方法を見逃してしまったのですが、保存する唯一の方法はディスクに保存することです。PhpExcelを使用してExcelにスプレッドシートを変数に書き込むにはどうすればよいですか?
答えて
ライターを使用してディスクに保存したり、php://出力に保存することができます。後者の場合は、出力バッファリングを使用してその出力をキャプチャし、変数に格納することができます。なぜこれをやりたいのですか? stdoutに印刷された後、
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_start();
$objWriter->save('php://output');
$excelOutput = ob_get_clean();
PHPExcelはどのような場合には、ファイルをディスクに書き込みますので、あなたが標準出力をキャプチャした場合、何が内部で発生したファイルがディスクに書き込まれていることで、ディスクから読み取る(および削除)、出力バッファに取り込まれます。
あなたにも行う可能性があります:
$tmpfile = tempnam($tmp_dir, 'phpxltmp');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($tmpfile);
$excelOutput = file_get_contents($tmpfile);
unlink($tmpfile);
これは、これに近づく方法の常識のようなものですが、この方法には多くの弱点があります.. あなたの作成/使用にはより多くの操作/時間/スペースが必要です。 このスクリプトを複数のインスタンスまたは重複で実行する場合、インスタンスごとに異なるファイルを生成する必要があります。これは、腐敗/厄介な問題につながる可能性があります。 OPは、ファイルにではなく変数に直接言いました。 – Mayhem
答えはすでにこれらの欠点を解決しています。 'tempnam'はインスタンスごとに異なるファイルを作成し、PHPExcelはどのような場合でもファイルを使用するので、2つの方法の効率が低いのは明らかに「まっすぐ変わる」アプローチです。多くの場合、 'readfile'やストリーム処理を使用してメモリの問題を回避し、さらにパフォーマンスを向上させることが可能です。受け入れられた答えはより直接的であるように見えますが、これはそれ自体にとって貴重ですが、私はまだこれが受け入れられた答え、または信頼できる代替物であるべきであると感じています。 – LSerni
- 1. Linqを使用してExcelスプレッドシートに書き込むにはどうすればよいですか?
- 2. forループを使用して複数のファイルを書き込むにはどうすればよいですか?
- 3. yasmを使用してMS Windowsのコンソールに書き込むにはどうすればよいですか?
- 4. CoreTextをMonoTouchで使用して回転テキストを書き込むにはどうすればよいですか?
- 5. Microsoft Excelをサーバーにインストールしていない状態でExcel文書に書き込むにはどうすればよいですか?
- 6. echoを使用して非ASCII文字を書き込むにはどうすればよいですか?
- 7. PHPファイルapiを使用して生のバイトを書き込むにはどうすればよいですか?
- 8. Excelスプレッドシートを読み込むOracleクエリを表示するにはどうすればよいですか?
- 9. bsddb3を使ってBerkeley DBに整数値を書き込むにはどうすればいいですか?
- 10. PHPExcelを使用してExcel文書にどのように参加できますか?
- 11. Excelファイルに連続的に書き込むにはどうすればよいですか?
- 12. ファイルに書き込むにはどうすればよいですか?
- 13. ExcelスプレッドシートをXMLにエクスポートするにはどうすればよいですか?
- 14. フラッシュを使用せずに.solファイルを書き込むにはどうすればよいですか?
- 15. JTextPaneにステータスバーを書き込むにはどうすればいいですか?
- 16. いくつかの使用方法を書き込むにはどうすればよいですか?
- 17. 変数を一定の時間書き込むにはどうすればよいですか?
- 18. GDataを使用してGoogleのプロジェクトでGoogleスプレッドシートを読むにはどうすればよいですか?
- 19. どのようにExcelをベースにJavaを使用してCSVファイルを書き込むには?
- 20. コントロールから値を抽出してXMLに書き込むにはどうすればよいですか?
- 21. cronをコピーしてローカルサーバーにファイルを書き込むにはどうすればよいですか?
- 22. NLogをデータベースに書き込むように設定するにはどうすればよいですか?
- 23. タブ区切り文字を使用して文字列配列をExcelファイルに書き込むにはどうすればよいですか?
- 24. URLに基づいてファイルにデータを書き込むにはどうすればよいですか?
- 25. Rustのメモリマップアドレスに書き込むにはどうすればいいですか?
- 26. htaccessに書き換えルールを書き込むにはどうすればよいですか?
- 27. char配列を書き込むにはどうすればいいですか?
- 28. ASP/VBScriptを使用してExcelファイルに書き込む
- 29. クエリ結果からSQLで複数のファイルを書き込むにはどうすればよいですか?
- 30. パイプにさらに値を書き込んで読み込むにはどうすればいいですか?
感謝を。これをsymfonyのようなフレームワークの中で使用している場合、私はExcelのサービスからいくつかのタイプの出力サービスまたはコントローラにコンテンツを渡す必要があります。私はむしろディスクへの書き込みのヒットを避けるだろう。 – Aaron
ファイル全体をPHPメモリに保持していると、メモリが大量に消費されている可能性があります。 –
公正な質問。アドバイスをいただきありがとうございます。 – Aaron