PHPSpreadsheet - Условное форматирование - Несколько условий в ячейке - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь понять, как установить несколько возможных условий в условном форматировании ячеек PHPSpreadsheet, и просто не могу заставить его работать.

Учитывая следующую таблицу в качестве примера:

A1 | B1 | C1
A2 | B2 | C2

Я хочу отформатировать ячейку (например, чтобы она стала красной), если значение равно: A1, B1 или C1.

Я пробовал добавить несколько условий, например:

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

$cells = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2'];

foreach ($cells as $cell) {

    $sheet->setCellValue($cell, $cell);

    $conditional1 = new \PhpOffice\PhpSpreadsheet\Style\Conditional();
    $conditional1->setConditionType(\PhpOffice\PhpSpreadsheet\Style\Conditional::CONDITION_CELLIS);
    $conditional1->setOperatorType(\PhpOffice\PhpSpreadsheet\Style\Conditional::OPERATOR_EQUAL);
    $conditional1->addCondition('A1');
    $conditional1->addCondition('B1');
    $conditional1->addCondition('C1');
    $conditional1->getStyle()->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);
    $conditional1->getStyle()->getFont()->setBold(true);

    $conditionalStyles = $spreadsheet->getActiveSheet()->getStyle('B2')->getConditionalStyles();
    $conditionalStyles[] = $conditional1;

    $spreadsheet->getActiveSheet()->getStyle($cell)->setConditionalStyles($conditionalStyles);

}

Но он подбирает только первое условие. Таким образом, в приведенном выше примере только ячейка A1 будет окрашена в красный цвет, так как только первое правило вставлено в файл Excel для этих ячеек.

Я пытался найти документацию или примеры по этому поводу для пары часов и не могу найти ни одного. Может кто-нибудь указать мне правильное направление, пожалуйста?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...