如何防止编辑单元格内容,但允许删除行。
上下文:电子表格将被下载,更新和导入。在可能有很多行的地方,但是只需要导入几行。 customer_email
和site_id
列应受到保护,但访问权限可以更新为Yes
或No
,删除行仅导入所需的数据。
初始下载:
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');
任何人都可以请问这是否可行吗?如果可以,上述代码中我缺少什么来实现这一目标?