PHPExcel とは PHP でエクセルファイルを生成することができるライブラリです。PHPExcel を初めて使ったので今後のために使い方をメモしておきます。

インストール

PHPExcel を下記よりダウンロードした zip ファイルを解凍して中にある Classes ディレクトリを任意の場所に置きます。
PHPExcel – OpenXML – Create Excel2007 documents in PHP – Spreadsheet engine – Home

あとは PHPExcel を使う PHP でこの Classes ディレクトリにパスを通して使用するクラスをインクルードします。

set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/Classes/');
include 'PHPExcel.php';
include 'PHPExcel/IOFactory.php';

エクセルファイルを出力する

基本的な手順は下記のようになります。

  • PHPExcel クラスのオブジェクトを生成
  • 作業するシートを指定
  • セルの値を更新
  • ファイルを出力

コードで書くと以下のようになります。

$excel = new PHPExcel();
// シートの設定
$excel->setActiveSheetIndex(0);
$sheet = $excel->getActiveSheet();
$sheet->setTitle('sheet name');
// セルに値を入れる
$sheet->setCellValue('A1', 'hoge');
// Excel2007 形式で出力
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save("output.xlsx");

出力形式は Excel 2007 以外にも指定できます。

// Excel 95 形式
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$writer->save("output.xls");

他にも PDF, HTML, CSV などで出力可能です。

セルには文字列だけでなく、数値や計算式も入れられます。

$sheet->setCellValue('B1', '=A2+A3');

また、セルの指定方法は ‘A1′ のような指定もできますし、下記のように行と列を数字で指定することも可能です。

$sheet->setCellValueByColumnAndRow(1, 2, 'hoge');

セルの書式を指定する

セルに罫線を入れたり、フォント、フォントサイズなど書式を指定することも可能です。

// フォント
$sheet->getDefaultStyle()->getFont()->setName('MS Pゴシック');
// フォントサイズ
$sheet->getDefaultStyle()->getFont()->setSize(12);
// セルの下に罫線を引く
$sheet->getStyle('A1')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
// センター寄せ
$sheet->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

罫線などはまとめて以下のようにして指定することも可能です。

$cell_style = array(
  'borders' => array(
    'top'     => array('style' => PHPExcel_Style_Border::BORDER_THIN),
    'bottom'  => array('style' => PHPExcel_Style_Border::BORDER_THIN),
    'left'    => array('style' => PHPExcel_Style_Border::BORDER_THIN),
    'right'   => array('style' => PHPExcel_Style_Border::BORDER_THIN)
  )
);
$sheet->getStyle('A1')->applyFromArray($cell_style);
// 行と列で指定することも可能
$sheet->getStyleByColumnAndRow(1, 2)->applyFromArray($cell_style);

セルの色の指定も可能。

$sheet->getStyleByColumnAndRow(1, 2)->getFill()->getStartColor()->setARGB('FFCCFFCC');

テンプレートを読み込んで加工する

PHPExcel でのセルの書式の指定とか結構面倒です。PHP で出力する Excel とかはだいたいフォーマットが同じことが多いです。そこで、まずエクセルで元となるファイルを作成してフォントやセルの色、罫線など必要な設定をしておきます。PHP では各セルの値だけを変更して出力するともっと簡単にできます。

// read template xls file
$reader = PHPExcel_IOFactory::createReader('Excel5');
$excel = $reader->load(TEMPLATE_FILE);
// set active sheet
$excel->setActiveSheetIndex(0);
$sheet = $excel->getActiveSheet();
// update cell
$sheet->setCellValue('A1', 'hoge');
// output excel file
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$writer->save("output.xls");

PHPExcel のオブジェクトを生成する部分が違うだけです。

その他

zip ファイルを解凍した中に Documentation フォルダがあり、その中に HTML 形式のドキュメントが入っています。
また、Tests フォルダには 29 個のサンプルコードが入っています。ファイル名からやりたいことの当りをつけられるので、やり方が分からない時には大変参考になります。

関連する投稿