PHPExcel用公式有条件地格式化一个范围

我有以下代码:

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

在那里我试图设置一个条件式的公式类似于:

= 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_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); } } 

“条件expression式”用于在条件格式中放置公式。 据我所知,实现公式的唯一方法是使用“setConditions”。 有了这个,你可以给一个string数组,每个string都是一个公式。 在你的代码中,当第一个坐标大于第二个坐标时,会导致红色。

现在回到你的代码,我没有testing它,所以你可能想调整一些值,但这应该至less推动你朝着正确的方向。 祝你好运!