Última versión, Laravel 5.4
No sé si es un error, no lo estoy haciendo bien o hay algo que todavía tengo que hacer.
Pude usar los métodos básicos y avanzados que se encuentran en el sitio web maat para la documentación de Excel.
Los métodos que utilicé fueron
$ sheet-> protect (), y es un método avanzado.
Estos métodos pudieron proteger toda la hoja, pero necesito proteger solo un rango de celdas.
Vi un método de hoja de trabajo:
$ hoja-> protectCells (A1); pero esto no me funciona. Por favor, ayúdeme con un método que pueda usar para lograrlo. Gracias..
Hola @GreenWhiteDev
Revisé la dependencia subyacente con una búsqueda en:
https://github.com/PHPOffice/PHPExcel/search?utf8=%E2%9C%93&q=protectCells&type=
Verás en los resultados:
https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Examples/05featuredemo.inc.php#L136 -L139
Eso es probablemente suficiente para que te pongas en marcha, supongo.
Algo como esto:
$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: agregando esta referencia:
Ver también
/**
* 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)
¡Tres parámetros para jugar con ese método!
¿Déjame saber cómo te va?
Finalmente, encontré la manera correcta de hacerlo.
$ objPHPExcel = nuevo PHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet ();
// PROTEGER LA GAMA CELULAR
$ objSheet-> protectCells ('A1: B1', 'PHP');
// DES PROTEGER LA GAMA CELULAR
$ objSheet-> getStyle ('A2: B2') -> getProtection ()
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// PROTEGER LA HOJA DE TRABAJO
$ objSheet-> getProtection () -> setSheet (verdadero);
¡Esto está funcionando perfectamente!
FUENTE: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell
En Laravel uso:
// PROTEGER con tu contraseña
$ hoja-> proteger ('contraseña');
// DESPROTEGE el rango de celdas
$ hoja-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// PROTEGER la hoja de trabajo
$ hoja-> getProtection () -> setSheet (verdadero);
@ jorgeald77 ¡Vaya! Eso funcionó tan bien ...
Detuve el proyecto por un tiempo. Empecé hace unos días.
Entonces no pude implementar la seguridad para el rango de celda. Probé tu solución y funcionó muy bien. Aprecio mucho esto.
Gracias a todos por contribuir.
Comentario más útil
Finalmente, encontré la manera correcta de hacerlo.
$ objPHPExcel = nuevo PHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet ();
// PROTEGER LA GAMA CELULAR
$ objSheet-> protectCells ('A1: B1', 'PHP');
// DES PROTEGER LA GAMA CELULAR
$ objSheet-> getStyle ('A2: B2') -> getProtection ()
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// PROTEGER LA HOJA DE TRABAJO
$ objSheet-> getProtection () -> setSheet (verdadero);
¡Esto está funcionando perfectamente!
FUENTE: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell
En Laravel uso:
// PROTEGER con tu contraseña
$ hoja-> proteger ('contraseña');
// DESPROTEGE el rango de celdas
$ hoja-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);
// PROTEGER la hoja de trabajo
$ hoja-> getProtection () -> setSheet (verdadero);