PHPExcelの使い方メモ


PHPでExcelを生成できる『PHPExcel』の使い方メモ
※実際に私が使ったものをメモしているだけなので、機能を網羅している訳ではないです。かしこ。

インストールはcomposerを使うか、圧縮ファイルをダウンロードしてきて
適当なディレクトリに解凍します。
あとは以下をrequireするだけ。
/格納したパス/PHPExcel/Classes/PHPExcel.php
/格納したパス/PHPExcel/Classes/PHPExcel/IOFactory.php

実際のソースコードは以下の通り

/**  
 * PHPExcelの新規オブジェクト作成  
 */  
$excel = new PHPExcel();  
  
/**  
 * シートを作成してシート名を変える  
 */  
$sheetIndex = 0; // シート番号は0から  
$excel->setActiveSheetIndex($sheetIndex);  
$sheet = $excel->getActiveSheet();  
$sheet->setTitle('SampleSheet01');  
  
/**  
 * セルにデータを入力する  
 */  
// 基本的な入力  
$rowCnt = 1; // 行番号は1から  
$clmCnt = 0; // 列番号は0から  
$text = 'セルに書き込む内容だよ';  
$sheet->setCellValueByColumnAndRow($clmCnt, $rowCnt, $val);  
  
// 文字列型で入力  
$rowCnt++; // 1行下に移動  
$clmCnt++; // 1列右に移動  
$text = '000001'; // 文字列型にしないと、左記は「00001」ではなく「1」になってしまう  
$sheet->setCellValueExplicitByColumnAndRow($clmCnt, $rowCnt, $val, PHPExcel_Cell_DataType::TYPE_STRING);  
  
/**  
 * セルの書式設定  
 */  
// シートのデフォルトフォントを設定する  
$sheet->getDefaultStyle()->getFont()->setName('MS Pゴシック')->setSize(11);  
  
// 背景色を設定  
$bgcolor = '000000'; // 16進数で指定  
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);  
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFill()->getStartColor()->setRGB($bgcolor);  
  
// 文字色を設定  
$fontcolor = 'FFFFFF'; // 16進数で指定  
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFont()->getColor()->setARGB($fontcolor);  
  
// 太字にする  
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFont()->setBold(true);  
  
// セル(行列番号指定)の上だけに罫線(二重線)を引く  
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_DOUBLE);  
// セル(レンジ指定)の周り全てに罫線(単一線)を引く  
$sheet->getStyle('A1:B3')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);  
  
  
// 列の幅を指定する  
$sheet->getColumnDimension('A')->setWidth(14.5);  
// 列の幅を自動調整する(※これで効くはずなんですが、効かない事が多々ある)  
$sheet->getColumnDimension( PHPExcel_Cell::stringFromColumnIndex($clmCnt))->setAutoSize(true);  

以上