エクセルファイルを作成する【PHP】

2017-03-20 8:15 PM

http://phpexcel.codeplex.com/

仕事上、突然必要になったことで、調べていくとこんなクラスライブラリが無料で使えるということを知った。

これを使うことで、ブラウザ上にあるデータをエクセルのファイル(拡張子が.xlsもしくは、.xlsx)を作成することができるようになる。
しかも意外と簡単にできてしまった。
ある程度はきちんと理解してからでないと、厳しいところはあるものの、なんとか出来る。

require_once $filepath. '/Classes/PHPExcel.php';

$objReader = PHPExcel_IOFactory::createReader('Excel5');

$writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$writer->save($file);

上記のプログラムは、氷翠が仕事上、古いバージョンのエクセルで出力する必要があったので、こんな感じになったわけです。

「createReader」「createWriter」で指定している「Excel5」の部分は

  • Excel2007
  • Excel5
  • Excel2003XML
  • OOCalc
  • SYLK
  • Gnumeric
  • HTML
  • CSV

といった感じで選ぶことができるようです。

今回、氷翠が扱うエクセルは複数のシートを同時に扱うようなデータ構造になっているので…

$objPHPExcel->setActiveSheetIndex(0);
$sheet_0 = $objPHPExcel->getActiveSheet();
$objPHPExcel->setActiveSheetIndex(1);
$sheet_1 = $objPHPExcel->getActiveSheet();
$objPHPExcel->setActiveSheetIndex(2);
$sheet_2 = $objPHPExcel->getActiveSheet();

という感じで複数のオブジェクトを用意。
オブジェクト変数に代入するのは2行必要だけど、これだけでシートを選択することが出来る。
もちろん、シートについている名前でも設定できるが、そのときは

$sheet = $obj->setActiveSheetIndexByName("シート名");

この様に指定することができる。

また、指定のセルに文字列を代入するには

$sheet_0->setCellValue('C1', $value);

としてあげればよい。
これで基本的な使い方は終了。

氷翠が勉強した内容で、メモは下記で。

  • テンプレートを用意して読み込む
  • 罫線をつけてみる
  • 文字の書式を変更する
  • セルの指定の仕方
  • バグっぽい?