PHPExcel1.8.0とCakePHP2.7.5でMySQLのデータを一覧表示できない。
http://phpexcel.codeplex.com/ ---> からダウンロード(1.8.0)2015年11月23日現在
■ダウンロードしたファイルを解凍し、Classesフォルダをphpexcelにリネーム。
そして、phpexcelフォルダをapp/Vendor/以下に設置
■テンプレートファイルの準備と配置場所
app/tmp/以下に、phpexcelフォルダを作成し
その中に2007形式の空の【template.xlsx】配置する。
■Controllerの設定
app/Controller/Users.php
public function excel() {
$this->layout = '';
$data = $this->User->findById(15);
$this->set('data', $data);
}
■View/Users/excel.ctp
<?php
App::import('Vendor', 'PHPExcel_Writer_IWriter', array('file' => 'phpexcel/PHPExcel/Writer/IWriter.php'));
App::import('Vendor', 'PHPExcel_Writer_Abstract', array('file' => 'phpexcel/PHPExcel/Writer/Abstract.php'));
App::import('Vendor', 'PHPExcel_Writer_Excel2007', array('file' => 'phpexcel/PHPExcel/Writer/Excel2007.php'));
App::import('Vendor', 'PHPExcel_Reader_Excel2007', array('file' => 'phpexcel/PHPExcel/Reader/Excel2007.php'));
$objReader = PHPExcel_IOFactory::createReader("Excel2007");
$template = TMP . 'phpexcel/';
$template_path = $template . 'template.xlsx';
$PHPExcel = $objReader->load($template_path);
$PHPExcel->setActiveSheetIndex(0);
$sheet = $PHPExcel->getActiveSheet();
$sheet->fromArray($data, null, 'A1');
$filename = 'output.xlsx';
$filename = mb_convert_encoding($filename, 'sjis', 'utf-8');
header('Content-Disposition: attachment;filename="' . $filename . '"');
$objWriter = new PHPExcel_Writer_Excel2007($PHPExcel);
$objWriter->save('php://output');
このようにすると、IDが15番のユーザーレコード情報が1行だけが
Excelファイルとして出力されます。
MySQLのデータをすべて一覧で表示したいのでControllerで、
$data = $this->User->find('all');
とすると無効な拡張子のファイルとエラーになります。
View側で<php debug($data); ?>
とすると配列できちんと一覧を取得しています。
$sheet->fromArray($data, null, 'A1');
の書き方が何か
違っているように思えます。
どなたか、ご存知の方、ご教授願えませんでしょうか。
よろしくお願いします。