CakePHP

Excelファイルを出力する「PHPExcel」をCakePHP2.3.xで使う方法

2016/09/13

既存のExcelフォーマットへ、CakePHPで作成(蓄積)したデータを流しこむという処理があったので、PHPExcelを使ってみました。
今回もまた、忘備録を兼ねたポストです。

PHPExcelを使う

PHPExcelとは


PHPExcelとは、PHPでExcelファイルの加工・出力を行うためのフリーコンポーネントです。
Excel97-2003にも対応はしていますが、Excel2007に力を入れたコンポーネントのようです。

とのことで、PHPでExcelファイルを扱いたい、てな場面で活躍するコンポーネントと考えて下さい。

ダウンロード・設置

ダウンロード

PHPExcel Home

PHPExcel - Home

上記サイト、右の方の「DOWNLOAD」ボタンよりダウンロードします。

PHPExcel 1.7.9

この記事を書いた時点でのバージョンは、1.7.9でした。

解凍・設置

書庫ファイルを解凍します。

PHPExcel 解凍イメージ

上記は解凍したイメージ。
Classes 以下のフォルダ及びファイルを使用します。

今回は、CakePHP2.3.6で動作させるので、Classes 以下のフォルダ及びファイルを CakePHP の Vendorディレクトリ へコピーします。

PHPExcel 設置イメージ

コピー後のイメージは上記の感じで。

コントローラー

宣言

使用するコントローラーで以下の宣言を行います。
古いバージョンでも動いてほしい、要するに拡張子が「xls」のファイルが良い!との要請があったので、Excel95用を読み込ませて使用します。

ちなみに、拡張子と対応するReadrを表にすると、以下となります。

拡張子対応するReadr
xlsPHPExcel_Reader_Excel5
xlsxPHPExcel_Reader_Excel2007
odsPHPExcel_Reader_OOCalc
slkPHPExcel_Reader_SYLK
xmlPHPExcel_Reader_Excel2003XML
gnumericPHPExcel_Reader_Gnumeric
csv-

PHPExcel-1.7 テンプレートファイルの読み込み PHPExcel_IOFactory::createReader PHPExcel_IOFactory::load
あたもこ様より転載。

今回は UsersController.php で使う事とします。

app/Controller/UsersController.php

読めばわかると思いますが、app/Vendor/phpecel/PHPExcel/ 以下の各ファイルへのパスを設定しているだけです。

データ取得

使用したいアクション内で、以下のように処理していきます。

まずは出力データの取得から。

テンプレ読み込み

bootstrap.php にて パスなどを define で定義しています。
define 内容は以下のようにしてみました。

本処理に戻り、使用するテンプレ、出力するファイル名や場所などを指定。

シートの選択

セルへ書込み

ファイル保存

これで指定したパス、今回だと

public_html/users/output_excel_sheet/user/2013_09/USER_REPORT_20130901130545.xls

に保存されます。

参考にしたサイト様

PHPExcelで、PHPからExcelを作成・操作する | Styler

PHPExcel-1.7 テンプレートファイルの読み込み PHPExcel_IOFactory::createReader PHPExcel_IOFactory::load

-CakePHP
-, , ,