【PHP】PHPExcelの処理が遅すぎるとき

PHPExcelはPHPでExcelのブックやシートを読込み、作成、出力できるライブラリです。

CSVではなくExcelで出力することで
はじめから可視化しやすい形で出力できるのですが、
データ量やシートの複雑さによっては
出力にかなり時間がかかるようになってしまうことがあります。

もし何も考えずにループの中で

を多用しているならば、チューニングによって
劇的に速くなるかもしれません。

例えば、帳票の出力などでは動的に行が増える場合が多いと思いますが、
ループの中で

のように1行ずつ追加していくような処理は、
かなりパフォーマンスが悪いようです。

そういうときには、追加する行数を計算してから

を1回実行することでパフォーマンスが向上します。

もし行数を計算するためだけに追加でループさせる必要があったとしても
1行ずつ

を実行するよりははるかに速い場合が多いようです。

また、

も、もしループの中で同じスタイルを1行ずつ実行しているのならば、
できる限りループの外で一括で実行することで
劇的にパフォーマンスが向上する可能性があります。

私の場合、実際にExcelで帳票を出力する場面があったのですが、
何も考えずに実装したときと、上記のとおりチューニングした場合とでは
10倍くらいの差がありました。