PHPExcelを使ってみる

PHPExcelとは、PHPでエクセルファイルを
扱いやすくするためのライブラリ

PHPでEXCEL(エクセル)を使いたかったので

PHPExcelを利用したときのメモメモ

まずは、ライブラリを持ってきてと思って
Gitコマンドで持ってきたら、大ハマり。。。
git clone https://github.com/PHPOffice/PHPExcel.git

ある程度動くんだけど、罫線がどうしても引けなくて。。。

普通に、ここからダウンロードしてきましょうw
https://phpexcel.codeplex.com/

まずは、落としてきたファイルの中の
Classes/PHPExcel.php
をインクルードしておく。

この中で、Autoloader.phpを読んでるので
いろいろ一緒に読み込んでくれてる

基本的な書き方

// Excel2007形式(xlsx)テンプレートの読み込み
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$excel  = $reader->load($excelFileNm);

//PHPExcelの新規オブジェクト作成
$excel = new PHPExcel();

// 1枚目のシートをアクティブに
$sheet  = $excel->setActiveSheetIndex(0);

// 該当行の最後のカラム位置を取得
$column = $sheet->getHighestColumn($row);

// カラムの英字を数字に変換 ※数字が0から始まるから、意図したものと1つずれる?!
$column = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn($row));

// カラムの数字を英字に変換
$colunmIdx = PHPExcel_Cell::stringFromColumnIndex($column);

// セルの書式設定
$sheet->getStyleByColumnAndRow($column, $raw)->getNumberFormat()->setFormatCode( '0.00%' );
$sheet->getStyle('A1')->getNumberFormat()->setFormatCode( '0.00%' );

// 値を書き込む
$sheet->setCellValue($selName , 'aaa');
$sheet->setCellValueByColumnAndRow($column, $row, 'aaaa');

// ウィンドウ枠の固定
$sheet->freezePane($selName);

// 罫線を引く ※ここでハマった。。。
$sheet->getStyleByColumnAndRow($column, $row)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_MEDIUM);
/* 罫線を引く場所
getLeft();          //セルの左側にボーダー
getRight();         //セルの右側にボーダー
getTop();           //セルの上部にボーダー
getBottom();        //セルの下部にボーダー
getDiagonal();      //セルに斜線
getAllBorders();    //範囲内のセルに全区切りにボーダー
getOutline();       //範囲内のセルの一番外側にボーダー
getInside();        //範囲内のセルの一番外側以外にボーダー
getVertical();      //範囲内のセルに縦線ボーダーのみ
getHorizontal();    //範囲内のセルに横線ボーダーのみ
*/

/* 線の種類 MEDIUMDASHEDくらいからよくわかんない、、、
PHPExcel_Style_Border::BORDER_NONE                  // なし
PHPExcel_Style_Border::BORDER_THIN                  // 細い
PHPExcel_Style_Border::BORDER_MEDIUM                // ちょい太
PHPExcel_Style_Border::BORDER_DASHED                // 破線
PHPExcel_Style_Border::BORDER_DOTTED                // 点線
PHPExcel_Style_Border::BORDER_THICK                 // 極太
PHPExcel_Style_Border::BORDER_DOUBLE                // 二重線
PHPExcel_Style_Border::BORDER_HAIR                  // 細い点線
PHPExcel_Style_Border::BORDER_MEDIUMDASHED          // 太めの破線
PHPExcel_Style_Border::BORDER_DASHDOT               // 細めの一点鎖線
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT         // 太めの一点鎖線
PHPExcel_Style_Border::BORDER_DASHDOTDOT            // 細めの二点鎖線
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT      // 太めの二点鎖線
PHPExcel_Style_Border::BORDER_SLANTDASHDOT          // 一点鎖線(線の切り口が斜め)
*/

// Excel2007形式で保存する
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$writer->save($excelFileNm);

他にもいろいろあって
かなり便利だから、機会があったら
絶対利用すべし!!

コメント

タイトルとURLをコピーしました