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..
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
/**
* 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 ..
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);