Как защитить отдельную ячейку с помощью phpspreadsheet - PullRequest
1 голос
/ 13 марта 2019

Я хочу защитить содержимое определенных ячеек от внесения изменений. Когда я пытался защитить весь лист, никаких проблем.

$sheet->getProtection()->setSheet(true)->setDeleteRows(true);

Но, не удалось установить защиту для отдельной ячейки. Я попробовал следующие коды.

1

$sheet->protectCellsByColumnAndRow(0, 1, 100, 100, 'asdf');

2

$sheet->protectCells('A1','password',false);

Заранее спасибо.

1 Ответ

0 голосов
/ 14 марта 2019

Вот решение. Сначала включите защиту листа. Затем разблокируйте все ячейки, изменив стиль защиты электронной таблицы по умолчанию. После этого заблокируйте нужную ячейку, указав ее координату. Защита листа применяется только к заблокированной ячейке. Таким образом, заблокированная ячейка больше не может быть отредактирована при открытии этой таблицы.

$spreadsheet->getActiveSheet()->getProtection()->setSheet(true);
$spreadsheet->getDefaultStyle()->getProtection()->setLocked(false);
$sheet->getStyle('A1')->getProtection()->setLocked(\PhpOffice\PhpSpreadsheet\Style\Protection::PROTECTION_PROTECTED);

ссылка разблокировать все ячейки и ссылка на отдельную ячейку помогла мне.

...