Laravel-excel: [问题] 如何为一系列单元格添加保护

创建于 2017-09-06  ·  3评论  ·  资料来源: Maatwebsite/Laravel-Excel

包版,Laravel 版

最新版本,Laravel 5.4

我不知道这是一个错误,我没有做对,或者还有什么我还没有做。

我能够使用 maatwebsite 中的基本和高级方法来处理 excel 文档。

我使用的方法是
$sheet->protect() ,它是高级方法。

这种方法能够保护整个工作表,但我只需要保护一系列单元格。

我看到了一个工作表方法:
$sheet->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(true);

这是完美的工作!
来源: https :

在 Laravel 中,我使用:

// 用你的密码保护
$sheet->protect('密码');

// 取消保护单元格区域
$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)

在该方法上使用三个参数!

让我知道你是怎么办的?

最后,我找到了正确的方法来做到这一点..

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

//保护细胞范围
$objSheet->protectCells('A1:B1', 'PHP');

// 取消保护细胞范围
$objSheet->getStyle('A2:B2')->getProtection()
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// 保护工作表
$objSheet->getProtection()->setSheet(true);

这是完美的工作!
来源: https :

在 Laravel 中,我使用:

// 用你的密码保护
$sheet->protect('密码');

// 取消保护单元格区域
$sheet->getStyle('F2:F1000')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// 保护工作表
$sheet->getProtection()->setSheet(true);

@ jorgeald77哇! 这太酷了..

我暂停了一段时间的项目。 我前几天刚开始。

那时我无法实现单元格范围的安全性。 我试过你的解决方案,效果非常好。 我非常欣赏这一点。

谢谢大家的贡献..

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

lucatamtam picture lucatamtam  ·  3评论

wwendorf picture wwendorf  ·  3评论

disto picture disto  ·  3评论

alejandri picture alejandri  ·  3评论

ellej16 picture ellej16  ·  3评论