#phpspreadsheet #phpoffice
#phpspreadsheet #phpoffice
Вопрос:
Изначально все ячейки на листе заблокированы. Затем я разблокирую все ячейки и пытаюсь заблокировать только некоторые из них.
$spreadsheet->getActiveSheet()->getStyle('A1')->getLocked()->applyFromArray(
[
'locked' => TRUE,
'hidden' => FALSE
]);
Но в итоге получается эта ошибка.
Неперехваченная ошибка: вызов неопределенного метода PHPOfficePhpSpreadsheetStyleStyle::getLocked()
Заранее спасибо.
Ответ №1:
Этот код способен заблокировать нужную нам ячейку.
$sheet->getStyle('A1')->getProtection()->setLocked(PhpOfficePhpSpreadsheetStyleProtection::PROTECTION_INHERIT);
или
$sheet->getStyle('A1')->getProtection()->setLocked(PhpOfficePhpSpreadsheetStyleProtection::PROTECTION_PROTECTED);
Тем не менее, я хотел бы знать, почему applyFromArray не работает для блокировки ячейки. Кто знает ответ, может опубликовать свой ответ. Спасибо.
Ответ №2:
Мне пришлось сделать это в два этапа. Шаг 1 при создании листа я сказал «На этом листе есть несколько диапазонов блокировки, но они не блокируются по умолчанию»
$spreadsheet->getActiveSheet()->getProtection()->setSheet(true);
$spreadsheet->getDefaultStyle()->getProtection()->setLocked(false);
Затем ApplyFromArray сработал
$spreadsheet->getActiveSheet()->getStyle('A1')->applyFromArray(
array(
'protection' => array('locked' => PhpOfficePhpSpreadsheetStyleProtection::PROTECTION_PROTECTED),
)
);