如何为 Laravel Excel 中的行设置背景色?
How to set background color for row in Laravel Excel?
我使用 Laravel Excel 库并且我试过这个代码:
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
$styleArray = array('fill' => array(
'color' => array('rgb' => '000000')
));
$cellRange = 'A1:W1'; // All headers
$event->sheet->getDelegate()->getStyle($cellRange)->applyFromArray($styleArray);
},
];
}
结果我得到 headers 没有黑色背景。
我也试过这个数组设置:
$styleArray = [
'font' => [
'bold' => true,
],
'background' => [
'color'=> '#000000'
]
];
我使用事件,而不是创建。请不要推荐不相关的答案
试试这个
$sheet->row(1, ['Col 1', 'Col 2', 'Col 3']); // etc etc
$sheet->row(1, function($row) { $row->setBackground('#CCCCCC'); });
您还可以将 $sheet->row() 更改为 $sheet->cell() 并继续将行号作为第一个参数传递。
$sheet->cell(1, function($row) {
$row->setBackground('#CCCCCC');
});
那么你也可以使用更 Excel 的符号:
$sheet->cells('A1:D1', function ($cells) {
$cells->setBackground('#008686');
$cells->setAlignment('center');
});
根据新 Laravel-excel 3.1 可以使用宏进行样式设置
https://docs.laravel-excel.com/3.1/imports/extending.html#macroable
您可以像我一样使用宏来设置样式。
我在 class
开始之前添加了以下代码
Sheet::macro('styleCells', function (Sheet $sheet, string $cellRange, array $style) {
$sheet->getDelegate()->getStyle($cellRange)->applyFromArray($style);
});
然后在AfterSheet
的事件下我用了它。
您可以像下面这样注册活动
public function registerEvents(): array
{
return [
AfterSheet::class => [self::class, 'afterSheet']
];
}
然后定义那个静态函数。
public static function afterSheet(AfterSheet $event){
//Single Column
$event->sheet->styleCells(
'A1',
[
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'color' => ['argb' => $singleHeaderColumnColorCode]
]
]
);
//Range Columns
$event->sheet->styleCells(
'B2:E2',
[
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'color' => ['argb' => $mergedAndCenterHeaderSubColumnColorCode]
]
]
);
}
确保你已经添加了接口WithEvents
如下图所示,这就是我导出的方式。
这段代码对我有用。在样式函数中的导出文件中添加此代码
$sheet->getStyle('A1:P1')->getFill()->applyFromArray(['fillType' => 'solid','rotation' => 0, 'color' => ['rgb' => 'D9D9D9'],]);
我使用 Laravel Excel 库并且我试过这个代码:
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
$styleArray = array('fill' => array(
'color' => array('rgb' => '000000')
));
$cellRange = 'A1:W1'; // All headers
$event->sheet->getDelegate()->getStyle($cellRange)->applyFromArray($styleArray);
},
];
}
结果我得到 headers 没有黑色背景。
我也试过这个数组设置:
$styleArray = [
'font' => [
'bold' => true,
],
'background' => [
'color'=> '#000000'
]
];
我使用事件,而不是创建。请不要推荐不相关的答案
试试这个
$sheet->row(1, ['Col 1', 'Col 2', 'Col 3']); // etc etc
$sheet->row(1, function($row) { $row->setBackground('#CCCCCC'); });
您还可以将 $sheet->row() 更改为 $sheet->cell() 并继续将行号作为第一个参数传递。
$sheet->cell(1, function($row) {
$row->setBackground('#CCCCCC');
});
那么你也可以使用更 Excel 的符号:
$sheet->cells('A1:D1', function ($cells) {
$cells->setBackground('#008686');
$cells->setAlignment('center');
});
根据新 Laravel-excel 3.1 可以使用宏进行样式设置 https://docs.laravel-excel.com/3.1/imports/extending.html#macroable
您可以像我一样使用宏来设置样式。
我在 class
开始之前添加了以下代码Sheet::macro('styleCells', function (Sheet $sheet, string $cellRange, array $style) {
$sheet->getDelegate()->getStyle($cellRange)->applyFromArray($style);
});
然后在AfterSheet
的事件下我用了它。
您可以像下面这样注册活动
public function registerEvents(): array
{
return [
AfterSheet::class => [self::class, 'afterSheet']
];
}
然后定义那个静态函数。
public static function afterSheet(AfterSheet $event){
//Single Column
$event->sheet->styleCells(
'A1',
[
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'color' => ['argb' => $singleHeaderColumnColorCode]
]
]
);
//Range Columns
$event->sheet->styleCells(
'B2:E2',
[
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'color' => ['argb' => $mergedAndCenterHeaderSubColumnColorCode]
]
]
);
}
确保你已经添加了接口WithEvents
如下图所示,这就是我导出的方式。
这段代码对我有用。在样式函数中的导出文件中添加此代码
$sheet->getStyle('A1:P1')->getFill()->applyFromArray(['fillType' => 'solid','rotation' => 0, 'color' => ['rgb' => 'D9D9D9'],]);