fulephpでエクセルファイルを読み込むサンプル
やる必要があったのでメモ
https://github.com/muhittin/fuelphp_excel
まずこちらからライブラリをダウンロード
fuel/packages/
にexcelというディレクトリをつくってアップロード。僕の場合のディレクトリ構成は以下
fuel/packages/excel/PHPExcel.php
fuel/packages/excel/bootstrap.php
fuel/packages/excel/PHPExcel/
実際に使って以下の様なエクセルファイルを読み込んでみる
>sample.xls
id | 名前 | 点数 |
---|---|---|
1 | 山田太郎 | 90 |
2 | 山田花子 | 50 |
$input_path = 'エクセルファイルへのパス'; //ライブラリ読み込み Package::load('excel'); $excel = PHPExcel_IOFactory::load($input_path); $sheet = $excel->getActiveSheet(); foreach ($sheet->getRowIterator() as $row) { foreach ($row->getCellIterator() as $cell) { echo $cell." "; } echo "<br>"; }
実行すると以下の様になります。簡単でした
id 名前 点数
1 山田太郎 90
2 山田花子 50
ついでに他でも使え回せるように以下のような処理を作ってみました。
$input_path = 'エクセルファイルへのパス'; $colums = array('id','名前','点数'); //ライブラリ読み込み Package::load('excel'); $excel = PHPExcel_IOFactory::load($input_path); $sheet = $excel->getActiveSheet(); //初期化用の配列 $format = array(); foreach (array_keys($colums) as $v) { $format[$v] = ''; } //1行目ヘッダー $xls2arr = array(); foreach ($sheet->getRowIterator() as $row) { if ($row->getRowIndex() <2) { foreach ($row->getCellIterator() as $k => $cell) { $k2 = array_search($cell->getValue(),$colums); if (false !== $k2) { $xls2arr[$k] = $k2; } } break; } } //2行目~データ $result = array(); foreach ($sheet->getRowIterator() as $row) { if (1 < $row->getRowIndex()) { $line = $format; $empty = true; foreach ($row->getCellIterator() as $k => $cell) { if (isset($xls2arr[$k])) { $line[$xls2arr[$k]] = $cell->getValue(); if ('' != $cell->getValue()) { $empty = false; } } } if (!$empty) { $result[] = $line; } else { break; } } } //出力 print_r($result);
で、
array(
0 => array('id'=>'1','名前'=>'山田太郎','点数' => '90'),
1 => array('id'=>'2','名前'=>'山田花子','点数' => '50'),
);
となります。関数化しておくと何気に使いやすいかもしれませんね