在PHPExcel中设置单元格背景颜色

96

如何在使用PHPExcel创建XLS文档时为活动单元格设置特定颜色?


我使用Muntashir Akon的解决方案完成了它。请参见下面的33票(目前)。 - LUISAO
10个回答

156

5
这是自2013-10-17以来不正确的语法。我已经编辑过来反映正确的语法。 - Matt Humphrey
如何在Excel Laravel库中设置背景颜色? - OPV

84
function cellColor($cells,$color){
    global $objPHPExcel;

    $objPHPExcel->getActiveSheet()->getStyle($cells)->getFill()->applyFromArray(array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array(
             'rgb' => $color
        )
    ));
}

cellColor('B5', 'F28A8C');
cellColor('G5', 'F28A8C');
cellColor('A7:I7', 'F28A8C');
cellColor('A17:I17', 'F28A8C');
cellColor('A30:Z30', 'F28A8C');

输入图像描述


6
您的函数没问题,但您正在使用全局变量,这是一个真正的错误... 您应该利用PHP5的功能。 相反,您可以尝试使用lambda函数,例如https://eval.in/39136 :) - Cito

38

这段代码应该适用于你:

 $PHPExcel->getActiveSheet()
        ->getStyle('A1')
        ->getFill()
        ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
        ->getStartColor()
        ->setRGB('FF0000')

但是如果你需要反复使用它,我建议使用applyFromArray


这个解决方案对我有效。我尝试使用applyFromArray,但是没有任何反应。 - LUISAO

11

看起来 applyFromArray 目前存在一个不接受颜色的错误,但这个方式对我有效:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');

1
虽然这是更优雅的解决方案(因为我更喜欢面向对象的方式),但它对我没有用 :/ 使用了@user198003提供的解决方案 - Aurimas

11

这段代码会一直运行:

$sheet->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setRGB('FF0000');


2
在某些 PHP 版本中,无法在属性类中断行。这是旧版本的问题。 - Rogerio de Moraes
3
重要提示!$objPHPExcel和$sheet都是来自于PHPExcel对象类的定义。你需要像实例化PHPExcel对象一样使用它们(即在new PHPExcel()的定义中使用)。 - Rogerio de Moraes
1
$objPHPExcel->getActiveSheet()->getStyle('A'.$row.':G'.$row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('FF0000'); - Defkon1

10

以下是如何在最新版本的PHPSpreadsheet中完成此操作:

$spreadsheet = new Spreadsheet();

$spreadsheet->getActiveSheet()->getStyle('A1:F1')->applyFromArray([
    'fill' => [
            'fillType' => Fill::FILL_SOLID,
            'startColor' => [
                'rgb' => 'FFDBE2F1',
            ]           
    ],
]);

备选方法:

$spreadsheet->getActiveSheet()
    ->getStyle('A1:F1')
    ->getFill()
    ->setFillType(Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFDBE2F1');

4
$objPHPExcel
->getActiveSheet()
->getStyle('A1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB('colorcode'); //i.e,colorcode=D3D3D3

1
$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->getRGB();

0

您可以轻松地为单元格和行应用颜色。

$sheet->cell(1, function($row) 
{ 
  $row->setBackground('#CCCCCC'); 
});

$sheet->row(1, ['Col 1', 'Col 2', 'Col 3']); 
$sheet->row(1, function($row) 
{ 
  $row->setBackground('#CCCCCC'); 
});

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接