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

CakePHP
記事内に広告が含まれています。

既存のExcelファイルへ、データベースに蓄積したデータを流しこむという処理があったので、CakePHPから「PHPExcel」を使用する方法を備忘録としてポストします。

CakePHPで PHPExcel を使用する

PHPExcelとは

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

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

ダウンロード、設置方法

ダウンロードする

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

本日時点のスクショ

PHPExcel Home

 

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

PHPExcel 1.7.9

 

ファイル展開、設置する

DLした zip ファイルを解凍(展開)します。

PHPExcel 解凍イメージ

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

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

PHPExcel 設置イメージ

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

コントローラーの編集

1. 出力するエクセルテンプレートへのパス定義

データを出力し、ダウンロードさせるためのエクセルファイルへのパスを bootstrap.php に定義します。今回の定義内容は以下のようにしてみました。

編集ファイル: app/Config/bootstrap.php

 

2. 宣言する

使用するコントローラーで以下の宣言を行います。

「古いバージョンでも動いてほしい」というか、「拡張子が xls のファイルでDLしたい」との要請があったので、今回は Excel95 用の Reader を読み込ませて使用します。

拡張子と対応する Reader を表にすると以下となります。

拡張子 対応するReader
xls PHPExcel_Reader_Excel5
xlsx PHPExcel_Reader_Excel2007
ods PHPExcel_Reader_OOCalc
slk PHPExcel_Reader_SYLK
xml PHPExcel_Reader_Excel2003XML
gnumeric PHPExcel_Reader_Gnumeric
csv

今回は UsersController.php で使うので、UsersController.php に宣言文を記述します。
読めばわかると思いますが、app/Vendor/phpecel/PHPExcel/ 以下の各ファイルへのパスを設定しているだけです。

編集ファイル: app/Controller/UsersController.php

 

3. データ取得

次に、使用したいアクション内で出力データを取得します。
これはPHPExcelは関係なく、普通に条件を指定して find するだけです。

 

4. 出力設定

使用するテンプレートファイル、出力するファイル名や出力パスなどを細かく指定。

 

5. シートの選択

 

6. セルへ書込み

 

7. ファイル保存

 

これで指定したパス、今回だと以下のパスに保存されます。

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

 

参考にしたサイト様

 

 

 

関連するかもしれないポスト

CakePHP
スポンサーリンク
シェアする
toogieをフォローする
タイトルとURLをコピーしました