phpでExcel操作(PHPExcel)

※今では非推奨となったが、古いPHP環境で動かすならPHPExcelを使うしかない。

新しい環境ならPHPOffice/PhpSpreadsheetを使ってね。

準備

  • PHPExcelのコードをgithubからzipでダウンロード
  • 解凍してClassesフォルダ内にあるPHPExcelフォルダとPHPExcel.phpをサーバー上にコピー。参照できる位置におくこと。

使い方

<?php
$filepath = "/home/saito/File/sample.xls";

//Classesディレクトリを配置したパスを指定
$path = "Classes/";
require_once($path . "PHPExcel.php");
require_once($path . "PHPExcel/IOFactory.php");

//拡張子がxlsx対応 拡張子によって読み込みの仕方を変える
preg_match('/[^.]+$/', $filepath, $tmp);
$extension = $tmp[0];

//xls
if($extension == "xls"){
	$xls = PHPExcel_IOFactory::load($filepath);
//xlsx
}else{
	$xls = PHPExcel_IOFactory::createReader('Excel2007')->load($filepath);
}

//ファイル内に複数のシートがある時対応
foreach ($xls->getSheetNames() as $i => $sheetName) {

	//下記二行で$i番目のシートを開く
	$xls->setActiveSheetIndex($i);
	$sheet = $xls->getActiveSheet();

	//各行を取得 $rには行番号が格納される
	foreach ($sheet->getRowIterator() as $r => $row) {

		//セルを取得 $cには列の記号(AとかB)が格納される
		foreach ($row->getCellIterator() as $c => $cell) {

			//セルの番号とセル内の値を出力
			echo $c . $r . ":" . $cell->getCalculatedValue() . "<br>";
		}
	}
}

参照するシートが決まってるなら

for($i=0;$i<4;$i++){

	// シートを取得
	$sheet = $excel->getSheet($i);

        ....
}

というやり方もあり。