Laravel-excel: [QUESTION] Como adicionar proteção a um intervalo de células

Criado em 6 set. 2017  ·  3Comentários  ·  Fonte: Maatwebsite/Laravel-Excel

Versão do pacote, versão do Laravel

Versão mais recente, Laravel 5.4

Não sei se é um bug, se não estou entendendo direito ou se há algo que ainda estou para fazer.

Consegui usar os métodos básicos e avançados encontrados no maatwebsite para documentação do Excel.

Os métodos que usei foram
$ sheet-> protect (), e seu método avançado.

Esses métodos foram capazes de proteger a folha inteira, mas eu preciso proteger apenas uma série de células.

Eu vi um método de planilha:
$ sheet-> protectCells (A1); mas isso não está funcionando para mim. Por favor, ajude com um método que eu poderia usar para conseguir isso. Obrigado..

Comentários muito úteis

Finalmente, encontrei a maneira certa de fazer isso ..

$ objPHPExcel = novo PHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet ();

// PROTEJA A FAIXA DE CÉLULAS
$ objSheet-> protectCells ('A1: B1', 'PHP');

// DESPROTEJA A FAIXA DE CÉLULAS
$ objSheet-> getStyle ('A2: B2') -> getProtection ()
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

// PROTEJA A FOLHA DE TRABALHO
$ objSheet-> getProtection () -> setSheet (true);

Isso está funcionando perfeitamente!
FONTE: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

No Laravel eu uso:

// PROTEJA com sua senha
$ sheet-> protect ('senha');

// DESPROTEGER o intervalo de células
$ sheet-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

// PROTEJA folha de trabalho
$ sheet-> getProtection () -> setSheet (true);

Todos 3 comentários

Olá @GreenWhiteDev

Eu verifiquei a dependência subjacente com uma pesquisa em:
https://github.com/PHPOffice/PHPExcel/search?utf8=%E2%9C%93&q=protectCells&type=

Você verá nos resultados:
https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Examples/05featuredemo.inc.php#L136 -L139

Isso provavelmente é o suficiente para você começar, eu acho.
Algo assim:

$sheet->getActiveSheet()->getProtection()->setSheet(true);  // Needs to be set to true in order to enable any worksheet protection!
$sheet->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');

Editar: adicionando esta ref:
Veja também

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)

Três parâmetros para brincar nesse método!

Deixe-me saber como você está?

Finalmente, encontrei a maneira certa de fazer isso ..

$ objPHPExcel = novo PHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet ();

// PROTEJA A FAIXA DE CÉLULAS
$ objSheet-> protectCells ('A1: B1', 'PHP');

// DESPROTEJA A FAIXA DE CÉLULAS
$ objSheet-> getStyle ('A2: B2') -> getProtection ()
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

// PROTEJA A FOLHA DE TRABALHO
$ objSheet-> getProtection () -> setSheet (true);

Isso está funcionando perfeitamente!
FONTE: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

No Laravel eu uso:

// PROTEJA com sua senha
$ sheet-> protect ('senha');

// DESPROTEGER o intervalo de células
$ sheet-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

// PROTEJA folha de trabalho
$ sheet-> getProtection () -> setSheet (true);

@ jorgeald77 Uau! Funcionou tão bem ..

Parei o projeto por um tempo. Eu comecei há alguns dias.

Não fui capaz de implementar a segurança para o intervalo de células então. Eu tentei sua solução e funcionou muito bem. Eu agradeço muito isso.

Obrigado a todos por contribuir ..

Esta página foi útil?
0 / 5 - 0 avaliações