Laravel-excel: [سؤال] كيفية إضافة حماية إلى نطاق من الخلايا

تم إنشاؤها على ٦ سبتمبر ٢٠١٧  ·  3تعليقات  ·  مصدر: Maatwebsite/Laravel-Excel

إصدار الحزمة ، إصدار Laravel

أحدث إصدار ، Laravel 5.4

لا أعرف ما إذا كان هذا خطأ ، أو لم أفهمه بشكل صحيح ، أو هناك شيء ما لم أفعله بعد.

تمكنت من استخدام الأساليب الأساسية والمتقدمة الموجودة في موقع maatwebsite لتوثيق ملفات Excel.

الأساليب التي استخدمتها كانت
$ sheet-> protect () ، وهي طريقة متقدمة.

كانت هذه الطرق قادرة على حماية الورقة بأكملها ، لكني بحاجة إلى حماية مجموعة من الخلايا فقط.

رأيت طريقة ورقة العمل:
ورقة $-> ProtectCells (A1) ؛ لكن هذا لا يعمل معي. الرجاء المساعدة بطريقة يمكنني استخدامها في تحقيق ذلك. شكرا..

التعليق الأكثر فائدة

أخيرًا ، وجدت الطريقة الصحيحة للقيام بذلك ..

objPHPExcel $ = جديد PHPExcel ؛
objSheet = $ objPHPExcel-> getActiveSheet () ؛

// حماية نطاق الخلايا
objSheet-> protectCells ('A1: B1'، 'PHP')؛

// إلغاء حماية نطاق الخلايا
objSheet $-> getStyle ('A2: B2') -> getProtection ()
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED) ؛

// حماية ورقة العمل
objSheet $-> getProtection () -> setSheet (صحيح) ؛

هذا يعمل على أكمل وجه!
المصدر: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

في Laravel أستخدم:

// حماية بكلمة مرورك
$ sheet-> حماية ('password') ؛

// إلغاء حماية نطاق الخلايا
$ sheet-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED) ؛

// حماية ورقة العمل
$ sheet-> getProtection () -> setSheet (صحيح) ؛

ال 3 كومينتر

مرحبًا GreenWhiteDev

لقد تحققت من التبعية الأساسية بالبحث في:
https://github.com/PHPOffice/PHPExcel/search؟utf8=٪E2٪9C٪93&q=protectCells&type=

سترى في النتائج:
https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Examples/05featuredemo.inc.php#L136 -L139

ربما يكون هذا كافيًا لجعلك تذهب على ما أعتقد.
شيء من هذا القبيل:

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

تحرير: إضافة هذا المرجع:
انظر أيضا

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)

ثلاث معلمات للعب بها على هذه الطريقة!

اسمحوا لي أن أعرف كيف تحصل على؟

أخيرًا ، وجدت الطريقة الصحيحة للقيام بذلك ..

objPHPExcel $ = جديد PHPExcel ؛
objSheet = $ objPHPExcel-> getActiveSheet () ؛

// حماية نطاق الخلايا
objSheet-> protectCells ('A1: B1'، 'PHP')؛

// إلغاء حماية نطاق الخلايا
objSheet $-> getStyle ('A2: B2') -> getProtection ()
-> setLocked (PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED) ؛

// حماية ورقة العمل
objSheet $-> getProtection () -> setSheet (صحيح) ؛

هذا يعمل على أكمل وجه!
المصدر: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

في Laravel أستخدم:

// حماية بكلمة مرورك
$ sheet-> حماية ('password') ؛

// إلغاء حماية نطاق الخلايا
$ sheet-> getStyle ('F2: F1000') -> getProtection () -> setLocked (\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED) ؛

// حماية ورقة العمل
$ sheet-> getProtection () -> setSheet (صحيح) ؛

تضمين التغريدة عملت بشكل رائع ..

لقد أوقفت المشروع مؤقتًا لفترة من الوقت. لقد بدأت للتو قبل أيام قليلة.

لم أتمكن من تنفيذ الأمان لنطاق الخلايا بعد ذلك. لقد جربت الحل الخاص بك وعمل بشكل رائع. أنا أقدر هذا كثيرا.

شكرا للجميع على المساهمة ..

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات