设置larvel -excel和PhpSpreadsheet宏



我使用的是Maatwebsite Laravel-excel 3.1版。我想设置工作表的默认样式。我已经阅读了关于在我的AppServiceProvider boot()方法中设置在laravel应用程序中包含宏的文档。:

Sheet::macro('getDefaultStyle',function(Sheet $sheet){
$sheet->getDefaultStyle();
});

但是当每次我重新加载页面它崩溃的页面和laravel服务器在我的cmd停止并重新运行。我的Export.php是这样的:

public function registerEvents():array 
{
return[
AfterSheet::class=>function(AfterSheet $event){
$header_style_array = [
'font'=>['bold'=>true]
];
$style_array = [
'font'=>['bold'=>true]
];
$event->sheet->getStyle('A1:B1')->getAlignment()->setHorizontal('center');
$event->sheet->getStyle('A1:B1')->applyFromArray($header_style_array);
$event->sheet->getDefaultStyle()->getFont()->setSize(5);
}];
}

我已经在Export.php文件中包含了use MaatwebsiteExcelConcernsWithEvents; use MaatwebsiteExcelEventsAfterSheet;

我错过了什么吗?我觉得这太难安排了。有一篇关于设置的小文章。

任何帮助都将非常感激参考文献:https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/风格https://docs.laravel-excel.com/3.1/exports/extending.html

如果你检查PhpSpreadsheet的文档,我想你会发现getDefaultStyle()方法在活动工作表中是不可访问的。

对于Laravel Excel,$event->sheet相当于$spreadsheet->getActiveSheet()。这就是为什么你当前的配置不能工作。

// this doesn't work
// $spreadsheet->getActiveSheet()->getDefaultStyle()->getFont()->setSize(5);
// this does
$spreadsheet->getDefaultStyle()->getFont()->setSize(5);

您应该通过BeforeWriting中的写入器设置默认样式。

public function registerEvents():array
{
return [
BeforeWriting::class=>function(BeforeWriting $event){
$event->writer->getDefaultStyle()->getFont()->setSize(5);
},
];
}

如果你想把它变成一个宏,你应该使用Writer宏而不是Sheet宏。

https://docs.laravel-excel.com/3.1/exports/extending.html作家
public function registerEvents():array
{
Writer::macro('setDefaultStyle', function (Writer $writer) {
$writer->getDefaultStyle()->getFont()->setSize(5);
});
return [
BeforeWriting::class=>function(BeforeWriting $event){
$event->writer->setDefaultStyle();
},
];
}

最新更新