PHPSpreadsheet - 无法获得Cell Fill Color

时间:2018-05-14 08:49:52

标签: php phpexcel phpspreadsheet

我正在使用PHPSpreadsheet来处理一些任务。 我想要做的是获得一个字段的填充颜色。

<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Conditional;
use PhpOffice\PhpSpreadsheet\Style\Font;

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load("missingean.xlsx");

$allMissing = $spreadsheet->getSheet(1)->getStyle('B4');

echo "<pre>"; print_r($allMissing); echo "</pre>";

这是我的代码。这是填充响应:

 [fill:protected] => PhpOffice\PhpSpreadsheet\Style\Fill Object
        (
            [startcolorIndex] => 
            [endcolorIndex] => 
            [fillType:protected] => none
            [rotation:protected] => 0
            [startColor:protected] => PhpOffice\PhpSpreadsheet\Style\Color Object
                (
                    [argb:protected] => FFFFFFFF
                    [isSupervisor:protected] => 1
                    [parent:protected] => PhpOffice\PhpSpreadsheet\Style\Fill Object
 *RECURSION*
                    [parentPropertyName:protected] => startColor
                )

            [endColor:protected] => PhpOffice\PhpSpreadsheet\Style\Color Object
                (
                    [argb:protected] => FF000000
                    [isSupervisor:protected] => 1
                    [parent:protected] => PhpOffice\PhpSpreadsheet\Style\Fill Object
 *RECURSION*
                    [parentPropertyName:protected] => endColor
                )

            [isSupervisor:protected] => 1
            [parent:protected] => PhpOffice\PhpSpreadsheet\Style\Style Object
 *RECURSION*
            [parentPropertyName:protected] => 
        )

据我所知,endColor应该是这里的填充颜色。不过,我的问题是,无论我指向哪个字段,此处的ARGB值始终为FF000000。我的Xlsx文件中有很多黄色字段,这些是我感兴趣的字段。无论我是以白色细胞还是黄色细胞为目标,endColor都保持不变。

我是否会错误地解决这个问题,或者是否有一个技巧可以让它发挥作用?

2 个答案:

答案 0 :(得分:3)

我也遇到过这个问题。至少对于我的Xlsx文件,背景颜色似乎存储为StartColor。 EndColor是白色的。这是我使用的代码。

$spreadsheet->getSheet(1)->getStyle('B4')->getFill()->getStartColor()->getRGB();

答案 1 :(得分:0)

在我的情况下,将ReadDataOnly属性更改为false解决了该问题。

$reader->setReadDataOnly(false);