Laravel-excel: [ВОПРОС] Как добавить защиту к диапазону ячеек

Созданный на 6 сент. 2017  ·  3Комментарии  ·  Источник: Maatwebsite/Laravel-Excel

Версия пакета, версия Laravel

Последняя версия, Laravel 5.4

Я не знаю, ошибка ли это, я не понимаю, или есть что-то, что мне еще предстоит сделать.

Я смог использовать базовые и расширенные методы, найденные на сайте maat, для документации по Excel.

Я использовал следующие методы:
$ sheet-> protect (), и это расширенный метод.

Эти методы смогли защитить весь лист, но мне нужно защитить только диапазон ячеек.

Я видел метод рабочего листа:
$ sheet-> protectCells (A1); но это не работает для меня. Пожалуйста, помогите с методом, который я мог бы использовать для достижения этой цели. Спасибо..

Самый полезный комментарий

Наконец, я нашел правильный способ сделать это ..

$ 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 (истина);

Все 3 Комментарий

Привет @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');

Изменить: добавление этой ссылки:
Также см

https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Classes/PHPExcel/Worksheet.php#L1793 -L1814

    /**
     * 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 Вау! Это сработало так здорово ...

Я приостановил проект на некоторое время. Я только начал несколько дней назад.

Тогда я не смог реализовать безопасность для диапазона ячеек. Я попробовал ваше решение, и оно сработало так здорово. Я очень это ценю.

Спасибо всем за участие ..

Была ли эта страница полезной?
0 / 5 - 0 рейтинги