特定のシートだけを読み込みたいとき(phpexcel)

2022年5月26日

読み込み時間の短縮化や省メモリ化などをしたい時に。 setLoadSheetsOnly() を使います。
require_once('PHPExcel/Class/PHPExcel.php');

$filename = "sample.xls";
$xls = PHPExcel_IOFactory::createReader("Excel5");

// 名前が Sheet1 のシートだけを読み込む
$targetSheetName = "Sheet1";
$xls->setLoadSheetsOnly($targetSheetName);
$wb = $xls->load($filename);

echo "シート数: ".$wb->getSheetCount()."\n";
ちなみにシート名が不明な場合は、listWorksheetNames() でシート名だけを取得できます。
require_once('PHPExcel/Class/PHPExcel.php');

$filename = "sample.xls";
$xls = PHPExcel_IOFactory::createReader("Excel5");

// 名前に Target を含む最初のシートだけを読み込む
$sheetCount = 0;
$wsList = $xls->listWorksheetNames($filename);
foreach($wsList as $sheetName) {
    if (strpos($sheetName, "Target") !== false) {
        $xls->setLoadSheetsOnly($sheetName);
        $wb = $xls->load($filename);
        $sheetCount = $wb->getSheetCount();
        break;
    }
}

echo "シート数: ".$sheetCount."\n";

excel,php,phpexcel

Posted by plkl