Laravel-excel: [FRAGE] So fügen Sie einer Reihe von Zellen Schutz hinzu

Erstellt am 6. Sept. 2017  ·  3Kommentare  ·  Quelle: Maatwebsite/Laravel-Excel

Paketversion, Laravel-Version

Neueste Version, Laravel 5.4

Ich weiß nicht, ob es ein Fehler ist, ich es nicht richtig mache oder ich noch etwas tun muss.

Ich konnte die grundlegenden und fortgeschrittenen Methoden der maatwebsite für die Excel-Dokumentation verwenden.

Die von mir verwendeten Methoden waren
$sheet->protect() , und seine erweiterte Methode.

Diese Methoden konnten das gesamte Blatt schützen, aber ich muss nur einen Bereich von Zellen schützen.

Ich habe eine Arbeitsblattmethode gesehen:
$sheet->protectCells(A1); aber das funktioniert bei mir nicht. Bitte helfen Sie mit einer Methode, die ich verwenden könnte, um dies zu erreichen. Vielen Dank..

Hilfreichster Kommentar

Endlich habe ich den richtigen Weg gefunden..

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

//SCHÜTZEN SIE DEN ZELLENBEREICH
$objSheet->protectCells('A1:B1', 'PHP');

// DEN ZELLENBEREICH UNSCHÜTZEN
$objSheet->getStyle('A2:B2')->getProtection()
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// ARBEITSBLATT SCHÜTZEN
$objSheet->getProtection()->setSheet(true);

Das funktioniert einwandfrei!
QUELLE: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

In Laravel verwende ich:

// SCHÜTZEN mit Ihrem Passwort
$sheet->protect('passwort');

// ENTSCHÜTZEN des Zellbereichs
$sheet->getStyle('F2:F1000')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// Arbeitsblatt PROTECT
$sheet->getProtection()->setSheet(true);

Alle 3 Kommentare

Hallo @GreenWhiteDev

Ich habe die zugrunde liegende Abhängigkeit mit einer Suche unter überprüft:
https://github.com/PHPOffice/PHPExcel/search?utf8=%E2%9C%93&q=protectCells&type=

In den Ergebnissen sehen Sie:
https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Examples/05featuredemo.inc.php#L136 -L139

Das ist wahrscheinlich genug, um dich zum Laufen zu bringen, denke ich.
Etwas wie das:

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

Bearbeiten: Diese Referenz hinzufügen:
Siehe auch

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)

Drei Parameter, mit denen Sie bei dieser Methode spielen können!

Lass mich wissen, wie es dir geht?

Endlich habe ich den richtigen Weg gefunden..

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

//SCHÜTZEN SIE DEN ZELLENBEREICH
$objSheet->protectCells('A1:B1', 'PHP');

// DEN ZELLENBEREICH UNSCHÜTZEN
$objSheet->getStyle('A2:B2')->getProtection()
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// ARBEITSBLATT SCHÜTZEN
$objSheet->getProtection()->setSheet(true);

Das funktioniert einwandfrei!
QUELLE: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

In Laravel verwende ich:

// SCHÜTZEN mit Ihrem Passwort
$sheet->protect('passwort');

// ENTSCHÜTZEN des Zellbereichs
$sheet->getStyle('F2:F1000')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// Arbeitsblatt PROTECT
$sheet->getProtection()->setSheet(true);

@jorgeald77 Wow! Das hat super funktioniert..

Ich habe das Projekt für eine Weile pausiert. Ich habe erst vor ein paar Tagen angefangen.

Ich war damals nicht in der Lage, die Sicherheit für den Mobilfunkbereich zu implementieren. Ich habe deine Lösung ausprobiert und es hat so cool funktioniert. Ich schätze das so sehr.

Danke an alle für den Beitrag..

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen