PHPExcel смешанная проверка столбцов

Я использую 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 для проверки?

0

Решение

Вероятно, вы могли бы использовать проверку на основе формул: например, это сработало для меня, предполагая, что вы хотите разрешить только целые числа от 10 до 100 или значения «отменено», «пропущено» —

     =OR(IFERROR(AND(ROUND(H13,0)=H13,H13>=10,H13<=100),FALSE),
OR(H13="canceled",H13="missed"))

Я не знаю, как это переводится в PHPExcel, так что это только половина ответа

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]