2016-12-08 2 views
0

Я использую PHPExcel, и я хотел бы проверить значения ячеек. Ну это работает довольно отлично этот код:PHPExcel mixed Column Validation

$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)); 

Но сейчас я бы Линк добавить два значения по умолчанию - строки - которые также должны быть разрешены, Р.Е. «cancled» или «missed». Возможно ли это? Я ничего не нашел в этом направлении? Другая идея заключалась в том, чтобы создать скрытый лист, но я не знаю, какой может быть соответствующий список значений.

Спасибо!

UPDATE:

Благодаря Тим Уильямс я попробовал:

$objValidation->setType(PHPExcel_Cell_DataValidation::TYPE_CUSTOM); 
$objValidation->setFormula1('=OR(AND('.$currCell.$ii.'>='.$min.','.$currCell.$ii.'<='.$max.'),'.$currCell.$ii.'="canceled",'.$currCell.$ii.'="missed")'); 

Странная вещь, что первое и выражение проверяется и я не в состоянии ввести другой номер за пределами мин/Макс. Но я все еще не могу ввести «отмененный» или «пропущенный». Вставив эту формулу в OpenOffice, я получил правильные логические значения.

Правильный способ использования пользовательских формул в PHPExcel для проверки?

ответ

0

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

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

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