【发布时间】:2020-08-06 21:00:36
【问题描述】:
我正在尝试研究如何在 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 文件中。
几个小时以来,我一直在尝试查找这方面的文档或示例,但似乎找不到任何内容。有人能指出我正确的方向吗?
谢谢。
【问题讨论】:
标签: php excel phpexcel phpspreadsheet