【问题标题】:PHPExcel conditional formatting off by one rowPHPExcel条件格式关闭一行
【发布时间】:2014-05-16 16:11:21
【问题描述】:

由于某种原因,我的条件格式被关闭了一行,我不知道为什么。

代码如下:

$conditional = new PHPExcel_Style_Conditional();                                                                                
$conditional->setConditionType(PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT);                                             
$conditional->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT);                                               
$conditional->setText('~?');                                                                          
$conditional->getStyle()->getFill()->applyFromArray(array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'endcolor' => array('rgb' => '7FA0D1')));  

...

$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('A:J')->getConditionalStyles();
array_push($conditionalStyles, $conditional);
$objPHPExcel->getActiveSheet()->getStyle('A:J')->setConditionalStyles($conditionalStyles);

在生成的电子表格中,我有

?
A

由于某种原因,它格式化了 A 而不是 ?它上面。如果我进入 Excel 的条件格式“管理规则”,选择此规则,“编辑规则”,单击“确定”而不更改任何内容,然后在主窗口中单击“确定”,它会自行修复。所以我不确定为什么它在第一次加载时关闭?

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    PHPExcel 不支持行和列样式,因此您的 getStyle 调用中的'A:J' 范围无效。仅支持单元格样式,因此您需要指定单元格范围

    例如

    $conditionalStyles = $objPHPExcel
        ->getActiveSheet()
        ->getStyle('A1024:J1024')
        ->getConditionalStyles();
    

    【讨论】:

    • 哦。什么时候必须指定范围?就像$conditional->getStyle() 一样,你没有得到你想要的样式?
    • 无论您在示例代码中指定的列范围如getStyle('A:J')...不支持列和列范围的样式,因此您需要指定一个单元格范围
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多