我正在使用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都保持不变。
我是否会错误地解决这个问题,或者是否有一个技巧可以让它发挥作用?
答案 0 :(得分:3)
我也遇到过这个问题。至少对于我的Xlsx文件,背景颜色似乎存储为StartColor。 EndColor是白色的。这是我使用的代码。
$spreadsheet->getSheet(1)->getStyle('B4')->getFill()->getStartColor()->getRGB();
答案 1 :(得分:0)
在我的情况下,将ReadDataOnly属性更改为false解决了该问题。
$reader->setReadDataOnly(false);