Как назначить полномочия только для чтения для ячеек в Excel через PHP?

Я использую библиотеку Github ( https://github.com/PHPOffice/PHPExcel/) для чтения и записи файлов в формате Excel через PHP. Теперь проблема в том, что я хочу, чтобы ячейки с раскрывающимся списком были защищены от любого другого ввода, что означает, что при двойном щелчке по раскрывающемуся списку он не должен редактироваться или форматироваться.

1 ответ

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

Вы можете включить проверку ввода следующим образом:

$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
$objValidation->setAllowBlank(false);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setShowDropDown(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Value is not in list.');
$objValidation->setPromptTitle('Pick from list');
$objValidation->setPrompt('Please pick a value from the drop-down list.');
$objValidation->setFormula1('"Item A,Item B,Item C"');
$objPHPExcel->getActiveSheet()->getCell('B5')->setDataValidation($objValidation);

Источник: https://docs.typo3.org/typo3cms/extensions/phpexcel_library/1.7.4/manual.html

Обратите внимание, что проверка ввода - это всего лишь уловка, чтобы помочь пользователю ввести правильные данные. В более поздний момент вы не сможете предположить, что данные в таблице Excel соответствуют проверке. Поэтому при повторной загрузке файла Excel вам нужно будет проверить достоверность данных.

Другие вопросы по тегам