PhpSpreadsheet 将单元格的背景颜色设置为白色

Posted

技术标签:

【中文标题】PhpSpreadsheet 将单元格的背景颜色设置为白色【英文标题】:PhpSpreadsheet set background color of cell to white 【发布时间】:2019-07-27 15:40:35 【问题描述】:

使用 phpSpreadsheet,我想为 excel 单元格设置白色背景。

$cells = 'A1';
$spreadsheet
    ->getActiveSheet()
    ->getStyle($cells)
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor(' #FFFFFF')
    ->setARGB('#FFFFFF');

即使我设置此白色 RGB 颜色值,此代码也会使单元格背景变黑:#FFFFFF

我想要达到的结果:

【问题讨论】:

谁能告诉我这段代码有什么问题.. '$sheet->getStyle('A1:E3')->applyFromArray(array( 'fill' => array( 'type' = > 填充::FILL_SOLID, 'color' => array('rgb' => 'E5E4E2' ) ));' 【参考方案1】:

当您为 PhpSpreadsheet 指定 ARGB 时,您不必包含 # 符号。这些解决方案将能够将单元格背景设置为白色:

逐个单元格

$spreadsheet
    ->getActiveSheet()
    ->getStyle($cells)
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()
    ->setARGB('ffffff');

单元格范围

$spreadsheet
    ->getActiveSheet()
    ->getStyle('A1:A5')
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()
    ->setARGB('ffffff');

【讨论】:

【参考方案2】:

通过使用样式数组一次设置几个样式:

styleArray = array(
            'borders' => array(
                'outline' => array(
                    'borderStyle' => Border::BORDER_THICK,
                    'color' => array('argb' => '00000000'),
                ),
            ),
            'fill' => array(
                'fillType' => Fill::FILL_SOLID,
                'startColor' => array('argb' => 'FF4F81BD')
            )
        );
$spreadsheet->getActiveSheet()->applyFromArray($styleArray);

在某些示例中,我们找到了“fill”而不是“fillType”。也许这取决于 phpSpreadsheet 的版本。另一个变体是 'color' 而不是 'startColor'。

【讨论】:

以上是关于PhpSpreadsheet 将单元格的背景颜色设置为白色的主要内容,如果未能解决你的问题,请参考以下文章

PhpSpreadsheet - 在不迭代每个单元格的情况下获取行

如何更改子单元格的单元格背景颜色

更改视图外单元格的背景颜色

背景颜色基于与单元格的差异

单元格的所有背景颜色都相同

UITableView - 如何在拖放期间更改单元格的背景颜色?