Laravel-excel: [質問]さまざまなセルに保護を追加する方法

作成日 2017年09月06日  ·  3コメント  ·  ソース: Maatwebsite/Laravel-Excel

パッケージバージョン、Laravelバージョン

最新バージョン、Laravel 5.4

それがバグなのか、正しく理解できないのか、それともまだやるべきことがあるのか​​はわかりません。

maatwebsiteにある基本的な方法と高度な方法を使用してExcelのドキュメントを作成することができました。

私が使用した方法は
$ sheet-> protected()、そしてそれは高度なメソッドです。

この方法でシート全体を保護することができましたが、保護する必要があるのはある範囲のセルだけです。

私はワークシートメソッドを見ました:
$ sheet-> protectedCells(A1); しかし、これは私にはうまくいきません。 これを達成するために私が使用できる方法を手伝ってください。 ありがとう..

最も参考になるコメント

最後に、私はそれを行う正しい方法を見つけました。

$ objPHPExcel =新しいPHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet();

//セル範囲を保護します
$ objSheet-> protectedCells( 'A1:B1'、 'PHP');

//セル範囲を保護しない
$ objSheet-> getStyle( 'A2:B2')-> getProtection()
-> setLocked(PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

//ワークシートシートを保護します
$ objSheet-> getProtection()-> setSheet(true);

これは完全に機能しています!
出典: https

Laravelでは以下を使用します:

//パスワードで保護します
$ sheet-> protected( 'password');

//セル範囲の保護を解除します
$ sheet-> getStyle( 'F2:F1000')-> getProtection()-> setLocked(\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

//保護ワークシートシート
$ sheet-> getProtection()-> setSheet(true);

全てのコメント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)

そのメソッドで遊ぶための3つのパラメーター!

どうやって乗るのか教えてください。

最後に、私はそれを行う正しい方法を見つけました。

$ objPHPExcel =新しいPHPExcel;
$ objSheet = $ objPHPExcel-> getActiveSheet();

//セル範囲を保護します
$ objSheet-> protectedCells( 'A1:B1'、 'PHP');

//セル範囲を保護しない
$ objSheet-> getStyle( 'A2:B2')-> getProtection()
-> setLocked(PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

//ワークシートシートを保護します
$ objSheet-> getProtection()-> setSheet(true);

これは完全に機能しています!
出典: https

Laravelでは以下を使用します:

//パスワードで保護します
$ sheet-> protected( 'password');

//セル範囲の保護を解除します
$ sheet-> getStyle( 'F2:F1000')-> getProtection()-> setLocked(\ PHPExcel_Style_Protection :: PROTECTION_UNPROTECTED);

//保護ワークシートシート
$ sheet-> getProtection()-> setSheet(true);

@ jorgeald77うわー! それはとてもクールに働きました。

プロジェクトをしばらく一時停止しました。 数日前に始めたばかりです。

その時、セル範囲のセキュリティを実装できませんでした。 私はあなたの解決策を試しました、そしてそれはとてもクールに働きました。 とても感謝しています。

貢献してくれてありがとう。

このページは役に立ちましたか?
0 / 5 - 0 評価