PHPSpreadsheet - 无法获取单元格填充颜色

PHPSpreadsheet - Unable to get Cell Fill Color

我正在使用 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 都保持不变。

我是不是做错了,或者有什么技巧可以让它发挥作用吗?

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

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

在我的例子中,将 ReadDataOnly 属性 更改为 false 解决了问题。

$reader->setReadDataOnly(false);