2011-07-25 34 views
4

PHPExcelの範囲のセルのデータを検証しようとしています。単一のセルの検証が機能します。PHPExcelはセルの範囲のデータを検証します

$objValidation = $objPHPExcel->getActiveSheet()->getCell('A1')->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('Number is not allowed!'); 
$objValidation->setPromptTitle('Allowed input'); 
$objValidation->setPrompt('Only 1 and 0 are allowed.'); 
$objValidation->setFormula1(0); 
$objValidation->setFormula2(1); 

このようなクローンを作成することで他のセルを検証できます。

$objPHPExcel->getActiveSheet()->getCell("A2")->setDataValidation(clone $objValidation); 

しかし、ループを介してデータを検証しようとすると、フリーズします。

$j = 2; 
while($j <= 10) 
{ 
    $objPHPExcel->getActiveSheet()->getCell("A$j")->setDataValidation(clone $objValidation);  
} 

私はここで間違っていますか?

P.S.ループは、getStyle()などの他の関数と連動します。

答えて

2

この例では、変数$jは決してインクリメントされません。

代わりにforeachのを試してみてください:

foreach($j=2; $j<=10; $j++) { 
    //do your stuff 
} 

たり、データ検証オブジェクトを作成し、範囲に割り当てることができdo-whilehttp://php.net/manual/en/control-structures.do.while.php

+0

「$ j ++」を追加するのを忘れました。愚かな間違い。 – theking963

0

ようにそれを変更する - ループ

を使用するよりも簡単
//-- Duration: 1 to 12 on range H2:H100 
$xl = new PHPExcel(); 
$sht = $xl->getActiveSheet(); 
$oVal = $sht->getDataValidation(); 
$oVal->setType(PHPExcel_Cell_DataValidation::TYPE_WHOLE); 
$oVal->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_STOP); 
$oVal->setAllowBlank(false); 
$oVal->setShowInputMessage(false); 
$oVal->setShowErrorMessage(true); 
$oVal->setErrorTitle("Erreur d'encodage"); 
$oVal->setError("La durée doit être entre 1 et 12 heures !"); 
$oVal->setPromptTitle('Validation de données'); 
$oVal->setPrompt('Uniquement de 1 à 12 heures sont autorisées.'); 
$oVal->setFormula1(1); 
$oVal->setFormula2(12); 
$sht->setDataValidation("H2:H100", $oVal); 
+0

この質問にはすでに回答があります。 –

関連する問題