2016-12-08 13 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)); 

しかし、今、私は2つのデフォルト値を追加するリンケをいただきたい - も許可する必要があり、P。E. - 文字列を"逃げた"または "逃した"。 これは可能ですか?私はこの方向で何も見つけられませんでしたか? もう一つのアイデアは、隠れたシートを作成することでしたが、対応する値リストが何であるか分かりません。

ありがとうございました!

UPDATE:ティム・ウィリアムズへ

おかげで私が試した:

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

奇妙なことは、第1のAND-式が検証されていること、であると私は分の外に別の番号を入力することはできませんよ/ max。しかし、私はまだ "キャンセル"または "逃した"と入力することはできません。この数式をOpenOfficeに挿入することで、私は正しいブール値を得ました。

PHPExcelでカスタム式を使用して検証するのは正しい方法ですか?

答えて

0

多分あなたは数式ベースの検証を使用することができます。例えば、これは、「キャンセル」あなたは全体の10から100までの数字または値のみを許可するように望んでいたと仮定すると私のために働いた、「見逃し」 -

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

私はそれが半分の答えですが、PHPExcelにどのように変換するのか分かりません