ホームページ >バックエンド開発 >PHPチュートリアル >大量のデータを含む時間のかかる Excel の生成に関連する phpexcel の問題
phpexcel 大量のデータを含む Excel の生成に時間がかかる問題
最近、私は phpexcel を使用してレポート テンプレートを作成し、ユーザー データに処理を加え、顧客が表示できるように Excel をエクスポートしています。
今、いくつかの問題が発生しました:
1. 時間がかかる問題
テスト後、10,000 行、6 列、1 つのシートのみを含む Excel を生成するのに 26 秒以上かかります。
コードを入力する 各内部パーツの所要時間は、シート内のセルの値とスタイルの入力に非常に時間がかかることがわかりました。
別のオプション。それをローカルファイルに保存することです save('test.xls', 'Excel5') にも 15 秒と長い時間がかかります (なぜそんなに長いのかわかりません)。
phpexcelのfromArrayメソッドを使ってシートのセルの値を埋めていますが、スタイルの設定にもgetCell($cellRange)を使っています。
時間を短縮できる最適化方法はありますか?
2 メモリ使用量の問題
上記の状況では、私のコードの最大メモリ使用量は 103m です。データ量がこれより大きい場合、データはすべて配列に格納されます。 >これと関係あるのでしょうか?何か良い提案はありますか?
助けてください、よろしくお願いします!
-----解決策---------最初の質問は何とも言えません
2 番目の質問は、10,000 個のデータを配列に入れることです。プログラムの実行が開始されると、すべてのデータが一度にメモリにロードされます。これは間違いなく大量のメモリを消費します。 、ループ内で処理するか、ファイルに書き込んでポインターを使用して処理します。
------解決策------配列から、つまり、最初に大きな配列を生成しますか?そしてそれを挿入しますか?
ループに挿入できないのですか?
以前、約 50,000 個のデータを Excel にエクスポートしたことがありますが、時間がかかり (10 枚以上、約 30 秒)、メモリ使用量もひどいです。 phpexcelの新バージョンではセルキャッシュの機能が追加され、パフォーマンスの向上につながる可能性があると言われています。
------解決策---------csv形式で書いた方が良いです