我正在使用Github库(https://github.com/PHPOffice/PHPExcel/)来通过PHP读取和写入excel文件。 现在,问题是我希望具有下拉的单元格受到保护以限制任何其他输入,这意味着当您双击下拉列表时,它不应该是可编辑的或可格式化的。
答案 0 :(得分:2)
我认为你真的不想要只读,因为你想让用户编辑单元格的内容,但你想确保他们只选择下拉框中的一个项目。您需要的是输入验证。
您可以像这样启用输入验证:
$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#_Toc237519927
请注意,输入验证只是帮助用户输入正确数据的噱头。以后,您不能假设Excel电子表格中的数据与验证一致。因此,在重新上传excel文件时,您需要检查数据的有效性。