分かりやすく、使いやすく。

インデックスを指定してワークシートオブジェクトを取得する

スポンサーリンク

PHPExcel でインデックスを指定してワークシートオブジェクトを取得するには getSheet メソッドを使用します。インデックスの先頭は 0 です。このメソッドは指定された名前のワークシートが存在しない場合は PHPExcel_Exception を throw します。

以下のサンプルコードでは、先頭のワークシートを取得しています。ちなみにインデックス 0 のシートは必ず存在します。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//PHPExcelの読み込み
require_once("./Classes/PHPExcel.php");
 
//既存ファイルの読み込み
$obj_reader = PHPExcel_IOFactory::createReader('Excel2007');
$obj_book   = $obj_reader->load('test.xlsx');
 
try{
    //インデックスを指定して、先頭のシートオブジェクトを取得します
    $obj_worksheet = $obj_book->getSheet(0);
 
}catch(PHPExcel_Exception $e){
    //指定したインデックスが存在しない場合は例外が発生します
    print "指定したインデックスのシートは存在しません\n";
}
 
//指定した名前のワークシートが存在しない場合は NULL がセットされます
if(!is_null($obj_worksheet)){
    print "取得したシートの名前→" . $obj_worksheet->getTitle() . "\n";
} 

test.xlsx に以下のようなシートが存在している場合の実行結果は次の通りです。

エクセルシート

取得したシートの名前→Sheet1 

getSheetCount メソッドを使用すれば、すべてのシートをループして 1 シートずつ処理することができます。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
//PHPExcelの読み込み
require_once("./Classes/PHPExcel.php");
 
//既存ファイルの読み込み
$obj_reader = PHPExcel_IOFactory::createReader('Excel2007');
$obj_book   = $obj_reader->load('test.xlsx');
 
//ループで存在するシートを全て取得します
for($i = 0; $i < $obj_book->getSheetCount(); $i++){
    $obj_worksheet = $obj_book->getSheet($i);
    print "取得したシートの名前→" . $obj_worksheet->getTitle() . "\n";
} 

test.xlsx に以下のようなシートが存在している場合の実行結果は次の通りです。

エクセルシート

取得したシートの名前→Sheet1
取得したシートの名前→Sheet2
取得したシートの名前→Sheet3 
スポンサーリンク