Последняя версия, Laravel 5.4
Я не знаю, ошибка ли это, я не понимаю, или есть что-то, что мне еще предстоит сделать.
Я смог использовать базовые и расширенные методы, найденные на сайте maat, для документации по Excel.
Я использовал следующие методы:
$ sheet-> protect (), и это расширенный метод.
Эти методы смогли защитить весь лист, но мне нужно защитить только диапазон ячеек.
Я видел метод рабочего листа:
$ sheet-> protectCells (A1); но это не работает для меня. Пожалуйста, помогите с методом, который я мог бы использовать для достижения этой цели. Спасибо..
Привет @GreenWhiteDev
Я проверил основную зависимость, выполнив поиск по адресу:
https://github.com/PHPOffice/PHPExcel/search?utf8=%E2%9C%93&q=protectCells&type=
В результате вы увидите:
https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Examples/05featuredemo.inc.php#L136 -L139
Думаю, этого, вероятно, достаточно, чтобы вы начали.
Что-то вроде этого:
$sheet->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection!
$sheet->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');
Изменить: добавление этой ссылки:
Также см
/**
* Set protection on a cell range
*
* <strong i="22">@param</strong> string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1)
* <strong i="23">@param</strong> string $pPassword Password to unlock the protection
* <strong i="24">@param</strong> boolean $pAlreadyHashed If the password has already been hashed, set this to true
* <strong i="25">@throws</strong> PHPExcel_Exception
* <strong i="26">@return</strong> PHPExcel_Worksheet
*/
public function protectCells($pRange = 'A1', $pPassword = '', $pAlreadyHashed = false)
Три параметра, с которыми можно поиграть в этом методе!
Дай мне знать, как у тебя дела?
Наконец, я нашел правильный способ сделать это ..
$ objPHPExcel = новый PHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet ();
// ЗАЩИТИТЬ ДИАПАЗОН ЯЧЕЙКИ
$ objSheet-> protectCells ('A1: B1', 'PHP');
// СНИМИТЕ ЗАЩИТУ ДИАПАЗОНА ЯЧЕЙКИ
$ objSheet-> getStyle ('A2: B2') -> getProtection ().
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// ЗАЩИТА РАБОЧЕГО ЛИСТА
$ objSheet-> getProtection () -> setSheet (истина);
Это отлично работает!
ИСТОЧНИК: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell
В Laravel я использую:
// ЗАЩИТИТЬ паролем
$ sheet-> protect ('пароль');
// СНИМАЕМ ЗАЩИТУ диапазона ячеек
$ sheet-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// ЗАЩИТИТЬ лист рабочего листа
$ sheet-> getProtection () -> setSheet (истина);
@ jorgeald77 Вау! Это сработало так здорово ...
Я приостановил проект на некоторое время. Я только начал несколько дней назад.
Тогда я не смог реализовать безопасность для диапазона ячеек. Я попробовал ваше решение, и оно сработало так здорово. Я очень это ценю.
Спасибо всем за участие ..
Самый полезный комментарий
Наконец, я нашел правильный способ сделать это ..
$ objPHPExcel = новый PHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet ();
// ЗАЩИТИТЬ ДИАПАЗОН ЯЧЕЙКИ
$ objSheet-> protectCells ('A1: B1', 'PHP');
// СНИМИТЕ ЗАЩИТУ ДИАПАЗОНА ЯЧЕЙКИ
$ objSheet-> getStyle ('A2: B2') -> getProtection ().
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// ЗАЩИТА РАБОЧЕГО ЛИСТА
$ objSheet-> getProtection () -> setSheet (истина);
Это отлично работает!
ИСТОЧНИК: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell
В Laravel я использую:
// ЗАЩИТИТЬ паролем
$ sheet-> protect ('пароль');
// СНИМАЕМ ЗАЩИТУ диапазона ячеек
$ sheet-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// ЗАЩИТИТЬ лист рабочего листа
$ sheet-> getProtection () -> setSheet (истина);