特定のシートだけを読み込みたいとき(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";