PHPでExcelファイルを生成しよう

Inagoraソフトウェアエンジニアの平田です。


業務でサーバ上のPHPExcelを生成する必要があり、PHPExcelを使用してみました。なんとこのライブラリを使えばPHPでExcel2007以降のファイルの読み書きができます!!!

やったことは

  1. PHPのパッケージ管理ツールのComposerでPHPExcelを導入
  2. Composerで導入したライブラリを読み込むように設定(初期化時に"require_once('.../vendor/autoload.php'"するだけ!!)
  3. templateとなるExcelファイルを読み込み
  4. 必要な情報を書いて目的のExcelを生成

最近の流行りなのかPHPでもパッケージ管理ツールがあるし、導入はすごく簡単でグッドです。
ライブラリ本体は使ってみると公式サイト(PHPExcel - Home)っぽいところではリファレンスマニュアルが見つからず、ネット上の情報を総動員して作成。
幸いにも他にも沢山使っている人がいて情報を公開してくれていたのでなんとかなりました。

困ったのは

  • 結構メモリを食う(それほど大きなファイルではないのですがPHPのメモリ使用量上限を512MByteくらいにしないと動きませんでした)
  • オートシェイプが未対応なようで、テンプレートとして使っているファイルにオーシェイプで書いても生成されるファイルから消えていました。
  • 書式のコピーが完全ではない模様。LibreOffice5で作成したものはきちんとコピーできていたのですがExcel最新版(2016/6/8現在)のものはコピー出来ず。

といったことがありましたが、CSVではなく装飾付きのExcelファイルを生成できるだけでも大違いです。
昔はサーバ上でExcel向けのファイルを生成する場合はCSVしか選択肢がなかったように思うけどフリーで使えるライブラリが簡単に手に入るとは。。。良い時代になったものです。