行/列の可視性の制限をまだ設定することはできないため、私の解決策は次のとおりです。
最初にシートに保護を設定し、次にユーザーが編集できるようにするセルの保護を削除します。
$latestTemplateColumn = $objPHPExcel->getActiveSheet()->getHighestDataColumn();
$latestTemplateColumn++;
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$column = 'A';
for ($row = 3; $row <= $maxRows; $row++) {
for ($column = 'A'; $column != $latestTemplateColumn; $column++) {
$cell = $objPHPExcel->getActiveSheet()->getCell($column.$row);
$objPHPExcel->getActiveSheet()->getStyle($column.$row)->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
}
}
このコードは、$ maxRowを設定するまで、またデータを含む最後の列まで、行3から始まります。このようにして、ユーザーは私が設定した範囲のデータのみを入力できます。