早上好
我需要使用PHPExcel设置单元格背景颜色,但我不知道该怎么做。
这是我的标头,并且可以正常工作:
$styleArray = array(
'font' => array(
'bold' => true,
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
),
'borders' => array(
'allborders' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN,
)
)
);
$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->applyFromArray($styleArray);
现在,我想通过这种方式设置单元格背景颜色:
J:Q列,如果单元格的值为“ OK”,则bg颜色为绿色;如果为“否”,则背景色为红色。
谢谢
答案 0 :(得分:0)
function cellColor($col, $row){
global $objPHPExcel;
$cell = $col.$row;
$cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
$color = 'ffffff';
if($cellValue == 'ok')
$color = 'ff0000';
if($cellValue == 'no')
$color = '30a30a';
$objPHPExcel->getActiveSheet()->getStyle($cell)->getFill()->applyFromArray(array(
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'startcolor' => array(
'rgb' => $color
)
));
}
例如,您可以这样使用:
cellColor('B', '5');
答案 1 :(得分:0)
我知道这个答案还很晚,但是我认为这里的问题没有得到正确回答。这必须使用条件格式完成,因为如果在PHP生成excel后单元格值发生更改,则颜色不会更改。即:Excel处理格式的逻辑。我一直试图使它工作,显然必须使用getEndColor()-> setRGB()而不是getStartColor()。 参见下面的示例:
$conditional1 = new \PhpOffice\PhpSpreadsheet\Style\Conditional();
$conditional1->setConditionType(\PhpOffice\PhpSpreadsheet\Style\Conditional::CONDITION_CONTAINSTEXT);
$conditional1->setOperatorType(\PhpOffice\PhpSpreadsheet\Style\Conditional::OPERATOR_CONTAINSTEXT);
$conditional1->setText('No');
$conditional1->getStyle()->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);
$conditional1->getStyle()->getFont()->setBold(true);
$conditional1->getStyle()->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID);
$conditional1->getStyle()->getFill()->getEndColor()->setRGB('FFC7CE');
$conditionalStyles[] = $conditional1;
$spreadsheet->getActiveSheet()->getStyle('E4')->setConditionalStyles($conditionalStyles);