[PEAR] Spreadsheet_Excel_Writerを使ってサーバ内にExcelファイルを保存する方法

GB-Scatterplot
Creative Commons License photo credit: briansuda

PHPからExcelファイルを出力するためのPEARライブラリ「Spreadsheet_Excel_Writer」を使って、PHPプログラムが動作するサーバ内にExcelファイルを出力する方法を調べたのでまとめておきます。

何が問題?

Spreadsheet_Excel_Writerを使ってExcelファイルを出力する場合、通常だと以下のようなコードを記述します。

ですが、上記の方法だとExcelファイルのデータが標準出力に出力されてしまい、ブラウザからExcelファイルをダウンロードするような形になってしまいます。
実現したいのは「PHPプログラムが動作するサーバ内にxlsファイルを保存する」ということなので、ちょっと違いますね。

解決策 – 出力バッファリングを使う

PHPには標準出力をバッファすることができる「出力制御関数」というものが用意されています。

出力バッファリングを使うことで、上記のコードでは標準出力に出力されていたExcelファイルのデータを、標準出力に出力することなく何らかの変数に格納することができます。
データを変数に格納できればこっちのもの、好きなようにExcelファイルのデータが扱えます!

というわけで出力制御関数を使って、サーバ内にExcelファイルを保存できるように上記コードを修正してみました。

このようにすることで、ブラウザからExcelファイルをダウンロードする形式ではなく、サーバ内に生成されたExcelファイルが保存されるようになりました。
めでたしめでたし。

まとめ

今回使った出力制御関数ですが、他にもいろいろと使えるシーンがありそうですね!

実は以前に何度か使ったことがあったんですけど、すっかり存在を忘れてしまっていました。
ずいぶん昔のことだったので。。

やっぱり復習は大事。
それでは!