今更ながらPHPExcel

PHPで扱っているデータをExcelにして出したい、みたいなときには
PHPExcelというものを使うケースが多いようだ。


こちらの記事に詳しい。
http://programming-study.com/technology/php-excel/


ここから取得できる。
https://github.com/PHPOffice/PHPExcel


<?php
$sheet = $excel->getActiveSheet();

でシートを取得し、

<?php
$sheet->setCellValue('A1', 'foobar');

のように行と列をしていして値を書き、

<?php
$writer = PHPExcel_IOFactory::createWriter();

で書き込んで

<?php
$writer->save();

でファイルやダウンロードへ出力する。がそれだとシートを作るためにarrayをループさせなければならなくなる。
すでに加工済みのarrayだと、多少煩わしいかもしれない。
けれども、

<?php
require_once(dirname(__FILE__) . '/PHPExcel-1.8/Classes/PHPExcel.php');
require_once(dirname(__FILE__) . '/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php');
 
$excel = new PHPExcel;
$sheet = $excel->getActiveSheet();
$sheet->setTitle('test');

$data_set = [
	['1' => 'test1', '2' => 'test2', '3' => 'test3'],
	['1' => 'test4', '2' => 'test5', '4' => 'test6']
];

$sheet->fromArray($data_set, null, 'A1');
 
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment;filename="test.xlsx"');
header('Cache-Control: max-age=0');
 
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save('php://output');

のように

<?php
$sheet->fromArray();

を使うとarrayの値をそのままシートにつっこめるようである。