2017-02-06 40 views
0

I持って次のコード:PHPExcelは条件式で範囲をフォーマット

= A1> A3

を:私は式と同類に条件付きスタイルを設定しようと

$vOffset = 2; 
$offset = 6; 
$formatRows = 100; 
$formatColumns = 100; 

//set conditional formatting in place 
for($row=$vOffset;$i<$formatRows;$row++){ 
    for($col=$offset+1;$col<$formatColumns;$col+3){ 
    //prepare conditional styles 
    //if verbal is bigger 
    $conditionalStyle_RED = new PHPExcel\Style_Conditional(); 
    $conditionalStyle_RED->setConditionType(PHPExcel\Style_Conditional::CONDITION_CELLIS); 
    $conditionalStyle_RED->addCondition(
     "=" . $this->coordinates($col, $row) . " > " . $this->coordinates($col+1,$row) 
    ); 
    $conditionalStyle_RED->getStyle()->getFont()->getColor()->setARGB(PHPExcel\Style_Color::COLOR_RED); 
    array_push($conditionalStyles, $conditionalStyle_RED); 

    $this->getActiveSheet() 
     ->getStyle($this->coordinates($col, $row) . ':' . $this->coordinates($col+1, $row)) 
     ->setConditionalStyles($conditionalStyles); 
    } 
} 

まだ動作していません。誰でもこれを達成する方法を知っていますか?

+0

何が問題なのですか?何が起こっている。 – ecc

+0

セルが次のセル以上になると、セルは赤色になりません。 –

答えて

1

かなり遅い回答ですが、私はインターネットで同様の問題を探しています。結局私はそれを解決しました。将来の人々がこの問題に遭遇するかもしれないが、私はいくつかのことを書き留めるだろう。

私は同じ種類の問題に苦労しており、解決することができました。必要なのは、条件付き書式に式を挿入することです。これは実際よりも厄介です。

特定のコードの場合、これはおそらく有効です。

$vOffset = 2; 
$offset = 6; 
$formatRows = 100; 
$formatColumns = 100; 

//set conditional formatting in place 
for($row=$vOffset;$i<$formatRows;$row++){ 
    for($col=$offset+1;$col<$formatColumns;$col+3){ 
     //prepare conditional styles 
     //if verbal is bigger 
     $conditionalStyle_RED = new PHPExcel\Style_Conditional(); 
     $conditionalStyle_RED->setConditionType(PHPExcel\Style_Conditional::CONDITION_EXPRESSION); 
     $conditionalStyle_RED->setConditions(array("(" . $this->coordinates($col, $row) . " > " . $this->coordinates($col+1,$row) . ")")); 
     $conditionalStyle_RED->getStyle()->getFont()->getColor()->setARGB(PHPExcel\Style_Color::COLOR_RED); 
     array_push($conditionalStyles, $conditionalStyle_RED); 

     $this->getActiveSheet() 
      ->getStyle($this->coordinates($col, $row) . ':' . $this->coordinates($col+1, $row)) 
      ->setConditionalStyles($conditionalStyles); 
    } 
} 

「condition_expression」は、条件付きフォーマット内に式を配置するために使用されます。限り、私は式を実装する唯一の方法を把握することができた "setConditions"を使用しています。これにより、各文字列が数式である文字列の配列を与えることができます。 コードでは、最初の座標が2番目の座標より大きい場合、赤の色になります。

コードに戻って、私はそれをテストしていないので、いくつかの値を微調整したいかもしれませんが、これは少なくともあなたを正しい方向に向けるべきです。幸運の仲間!

関連する問題