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);
我正在使用 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);