Laravel-excel: [PREGUNTA] Cómo agregar protección a un rango de celdas

Creado en 6 sept. 2017  ·  3Comentarios  ·  Fuente: Maatwebsite/Laravel-Excel

Versión de paquete, versión de Laravel

Ú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..

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);

Todos 3 comentarios

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

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)

¡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.

¿Fue útil esta página
0 / 5 - 0 calificaciones