我有一张基于
的表格拉取值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的东西很新,所以非常感谢任何有助于这项工作的帮助。
由于
答案 0 :(得分:7)
applyFromArray()
是PHPExcel_Cell对象的方法,而不是单元格值(除非单元格包含富文本,否则它是一种简单的PHP数据类型)....所以你需要针对单元格调用它? p>
$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);
答案 1 :(得分:1)
你可能想叫这个:
$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,则颜色会发生变化。该脚本还会缓存您的单元格。如果你把它放在循环中,这可能会为你节省一些时间。
答案 2 :(得分:-1)
我最终通过将颜色放在css表中并添加以下两行代码来解决它:
if ($slaHours >= 0 & $slaHours <= 12)
{
$slaHours = "<b id =\"colorsla\">" . $slaHours . "</b>";
}
感谢所有回复,非常感谢帮助