如何解决Laravel excel 将复杂的标题添加到导出
我需要通过 Laravel Excel 导出带有复杂标题的工作表。我需要一个主标题和另一个子级标题。
我正在尝试这样,
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
class InvoicesExport implements FromQuery,WithHeadings
{
public function headings(): array
{
return [
'Account 1' =>[
"Account 1 id","Account 1 branch"
],'Account 2' =>[
"Account 2 id","Account 2 branch"
],];
}
}
但是获取标题列,例如 [ "Account 1 id","Account 1 branch" ]
有没有办法存档这个任务?
解决方法
最后,我设法做到了。添加它,因为它对其他人有用。
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Concerns\WithEvents;
use \Maatwebsite\Excel\Sheet;
class InvoicesExport implements FromCollection,WithHeadings,WithCustomStartCell,WithEvents{
public function startCell(): string
{
return 'A2';
}
public function registerEvents(): array {
return [
AfterSheet::class => function(AfterSheet $event) {
/** @var Sheet $sheet */
$sheet = $event->sheet;
$sheet->mergeCells('A1:B1');
$sheet->setCellValue('A1',"Account 1");
$sheet->mergeCells('C1:D1');
$sheet->setCellValue('C1',"Account 2");
$styleArray = [
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,],];
$cellRange = 'A1:D1'; // All headers
$event->sheet->getDelegate()->getStyle($cellRange)->applyFromArray($styleArray);
},];
}
public function headings(): array
{
return [
"Account 1 id","Account 1 branch"
"Account 2 id","Account 2 branch"
];
}
}
嘿嘿,我添加了 startCell() 从第二行开始。 registerEvents() 将第一行单元格与内容合并并居中对齐。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。