PHPSpreadsheet - Невозможно получить цвет заливки ячейки - PullRequest
0 голосов
/ 14 мая 2018

Я работаю с таблицей PHPS для решения некоторых задач. Я пытаюсь получить цвет заливки поля.

<code><?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 "
";

Это мой код. Вот ответ заполнения:

 [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 голосов
/ 08 октября 2018

в моем случае изменение свойства ReadDataOnly на false решило проблему.

$reader->setReadDataOnly(false);
0 голосов
/ 06 июня 2018

У меня тоже были проблемы с этим.По крайней мере, для моих файлов Xlsx цвет фона сохраняется как StartColor.EndColor всегда возвращается белым.Вот код, который я использовал.

$spreadsheet->getSheet(1)->getStyle('B4')->getFill()->getStartColor()->getRGB();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...