Я использую PHPExcel, и я хотел бы проверить значения ячеек. Ну, это работает довольно хорошо с помощью этого кода:
$objValidation = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($tdCount-1,$ii)->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP );
$objValidation->setAllowBlank(true);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Only integers between '.$min.' and '.$max.' allowed');
$objValidation->setPromptTitle('Permitted Input:');
$objValidation->setPrompt('Only integers between '.$min.' and '.$max.' allowed');
$objValidation->setFormula1(intval($min));
$objValidation->setFormula2(intval($max));
Но теперь я хотел бы добавить два значения по умолчанию — строки — которые также должны быть разрешены, т. Е. «отменен» или «пропущен».
Это возможно? Я не нашел ничего в этом направлении?
Другая идея заключалась в создании скрытого листа, но я понятия не имею, каким может быть соответствующий список значений.
Спасибо!
ОБНОВИТЬ:
Благодаря Тиму Уильямсу я попробовал:
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_CUSTOM);
$objValidation->setFormula1('=OR(AND('.$currCell.$ii.'>='.$min.','.$currCell.$ii.'<='.$max.'),'.$currCell.$ii.'="canceled",'.$currCell.$ii.'="missed")');
Странно то, что первое AND-выражение проверено, и я не могу ввести другое число, кроме min / max. Но я все еще не могу ввести «отменено» или «пропущено». Вставив эту формулу в OpenOffice, я получил правильные логические значения.
Это правильный способ использовать пользовательские формулы в PHPExcel для проверки?
Вероятно, вы могли бы использовать проверку на основе формул: например, это сработало для меня, предполагая, что вы хотите разрешить только целые числа от 10 до 100 или значения «отменено», «пропущено» —
=OR(IFERROR(AND(ROUND(H13,0)=H13,H13>=10,H13<=100),FALSE),
OR(H13="canceled",H13="missed"))
Я не знаю, как это переводится в PHPExcel, так что это только половина ответа
Других решений пока нет …