【问题标题】:PHPExcel cell style formatting error on a non-object非对象上的 PHPExcel 单元格样式格式错误
【发布时间】:2017-04-14 22:39:39
【问题描述】:

我正在尝试格式化我的 xls 输出表中的单元格,但是当我尝试使用时

$xls->getActiveSheet()->getStyle('A1')->getFont()->getColor()->setRGB(PHPExcel_Style_Color::COLOR_WHITE);

或使用getStyle() 的任何其他方法我收到此错误:

( ! ) 致命错误:在第 755 行的“...”/Worksheet.php 中对非对象调用成员函数 getNumberFormat()

其他getActiveSheet() 方法,如setTitle()getColumnDimension() 工作正常。我正在使用 Excel5 writer,但是当我尝试 Excel2007 时,我得到了同样的错误。有谁知道可能是什么问题?提前致谢。

当我注释掉列宽循环时,我没有收到错误,但应用的样式仍然不起作用。无需样式应用代码,列宽循环即可完美运行。

【问题讨论】:

  • 您确定样式给了您错误吗?警告是关于 getNumberFormat()。尝试注释这行代码,你会再次遇到同样的错误吗?
  • 是的,我确定,当该行被注释掉时,它可以正常工作。

标签: php phpexcel cell-formatting


【解决方案1】:

你可以试试这个方法给你的 PHPExcel 添加样式。

首先创建一个包含样式的数组。 像这样的

    $color = array(
        'fill' => array(
            'type' => PHPExcel_Style_Fill::FILL_SOLID,
            'color' => array('rgb' => 'A5A5A5')
        ),
        'borders' => array(
            'allborders' => array(
                'style' => PHPExcel_Style_Border::BORDER_THIN
            )
        ),
        'alignment' => array(
            'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
        )
    );

创建数组后,您必须将样式应用于您的对象。 像这样。

    $xls->getActiveSheet()->getStyle('A1:A10')->applyFromArray($color);

【讨论】:

  • 我尝试了所有(我认为所有,arraystyle 也是)样式应用方法,在每种情况下getStyle() 都会导致相同的错误。
  • $objReader 不是对象。您从哪里引用了此代码?
  • $objReader is object(PHPExcel_Reader_CSV) 从 CSV 加载数据,抱歉,我不明白你的问题 :(
  • 当我注释掉列宽设置循环时,我没有收到错误,但仍然没有应用样式。
  • 评论该行并应用我的答案而不是您的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多