保护单元格内容,但允许使用PHPSpreadSheet删除行

时间:2018-11-16 13:35:20

标签: php phpspreadsheet

如何防止编辑单元格内容,但允许删除行。

上下文:电子表格将被下载,更新和导入。在可能有很多行的地方,但是只需要导入几行。 customer_emailsite_id列应受到保护,但访问权限可以更新为YesNo,删除行仅导入所需的数据。

初始下载:

customer_email  | site_id | access
alice@email.com | 1       | Yes
alice@email.com | 2       | No
alice@email.com | 3       | No
bob@email.com   | 1       | No
bob@email.com   | 2       | No
bob@email.com   | 3       | Yes

行已删除,access已更新:

customer_email  | site_id | access
alice@email.com | 1       | No
bob@email.com   | 1       | No

有一个用于保护工作表的recipe和一个full list of functions can be seen on github,但我没有得到想要的东西,我不确定是否有可能。配方说明:

  

Excel提供3个级别的“保护”:
  
  文档:允许您在完整的电子表格上设置密码,仅当输入该密码后才能进行更改。
  工作表:提供其他安全选项:您可以禁止在特定工作表上插入行,禁止排序,...
  单元格:提供锁定/解锁单元格以及显示/隐藏内部公式的选项。

但是,在允许删除行的同时是否可以锁定单元格的内容尚不清楚。我尝试使用以下代码执行此操作,但是右键单击一行时,删除选项仍显示为灰色。

运行composer require phpoffice/phpspreadsheet后,添加test.php

<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'some data');
$sheet->setCellValue('A2', 'other data');
$sheet->setCellValue('A3', 'more data');

$spreadsheet->getActiveSheet()->getProtection()
    ->setSheet(true)
    ->setDeleteRows(true);

$writer = new Xlsx($spreadsheet);
$writer->save('test_delete_rows.xlsx');

任何人都可以请问这是否可行吗?如果可以,上述代码中我缺少什么来实现这一目标?

0 个答案:

没有答案