繁体   English   中英

PHPExcel根据单元格值设置字体/背景颜色

[英]PHPExcel set font/background colour based on cell value

我有一张纸张拉取值基于

if ($slaHours >= 0 & $slaHours <= 72) 

我想要做的是设置这些值的颜色,如果值小于12.我仍然想显示大于12且小于72的值,所以我尝试的代码是

$styleArray = array(
'font'  => array(
    'bold'  => true,
    'color' => array('rgb' => 'FF0000'),
));

if ($slaHours >= 0 & $slaHours <= 72)
    $slaHours = $objWorksheet->getCellByColumnAndRow(3, $row)->getValue();
    if($slaHours <=12) {    
        $slaHours = $objWorksheet->getCellByColumnAndRow(3, $row)->getValue()->applyFromArray($styleArray); 

但是,我得到一个致命的错误

“在非对象上调用成员函数applyFromArray()”

这个PHP的东西很新,所以非常感谢任何有助于这项工作的帮助。

谢谢

applyFromArray()是PHPExcel_Cell对象的一个​​方法,而不是单元格值(除非单元格包含富文本,这是一个简单的PHP数据类型)....所以你需要针对单元格调用它

$objWorksheet->getCellByColumnAndRow(3, $row)->applyFromArray;

但是如果你需要一个基于单元格值的样式,那么你应该使用条件样式。 有关详细信息,请参阅开发人员文档的4.6.23节(“条件格式化单元格”),并查看示例中的08conditionalformatting.php

编辑

$objConditionalStyle = new PHPExcel_Style_Conditional();
$objConditionalStyle->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS)
    ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN)
    ->addCondition('12');
$objConditionalStyle->getStyle()->getFont()->getColor()->setRGB('FF0000');
$objConditionalStyle->getStyle()->getFont()->setBold(true);

$conditionalStyles = $objWorksheet->getStyle('A3')
    ->getConditionalStyles();
array_push($conditionalStyles, $objConditionalStyle);
$objPHPExcel->getActiveSheet()->getStyle('A3')
    ->setConditionalStyles($conditionalStyles);

你可能想叫这个:

$slaHours = $objWorksheet->getCellByColumnAndRow(3,$row)->applyFromArray($styleArray);

编辑

我已经改变了你的代码:

$cell = $objWorksheet->getCellByColumnAndRow(3, $row);
if($slaHours >= 0 && $slaHours <= 72)
    $slaHours = $cell->getValue();
if($slaHours <=12) {    
    $cell->applyFromArray($styleArray);

因此,由于第一个条件为真,因此设置了$slaHours 之后,如果$slaHours小于或等于12,则颜色会发生变化。 该脚本还会缓存您的单元格。 如果你在循环中有这个,这可能会节省一些内存。

我最终通过将颜色放在css表中并添加以下两行代码来解决它:

if ($slaHours >= 0 & $slaHours <= 12)
{
    $slaHours = "<b id =\"colorsla\">" . $slaHours . "</b>";
}

感谢所有的回复,非常感谢帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM