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

PHPExcel conditionally formatting a range with a formula

我有以下代码:

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

"condition_expression" 用于将公式置于条件格式中。据我所知,实现公式的唯一方法是使用 "setConditions"。有了这个,你可以给出一个字符串数组,每个字符串都是一个公式。 在您的代码中,当第一个坐标大于第二个坐标时,这将导致颜色为红色。

现在回到您的代码,我尚未对其进行测试,因此您可能想要调整一些值,但这至少应该将您推向正确的方向。祝你好运!