#laravel-5 #maatwebsite-excel #laravel-excel
Вопрос:
Мне нужно экспортировать лист со сложным заголовком через Laravel Excel. Мне нужен основной заголовок и еще один заголовок подуровня после.
Я пытаюсь вот так,
use MaatwebsiteExcelConcernsFromQuery;
use MaatwebsiteExcelConcernsWithHeadings;
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"
],
];
}
}
Но получение столбцов заголовка, таких как [ «Идентификатор учетной записи 1», «Филиал учетной записи 1» ]
есть ли способ заархивировать эту задачу?
Ответ №1:
Наконец, мне удалось это сделать. Добавляю его, так как это будет полезно для кого-то другого.
use MaatwebsiteExcelConcernsFromQuery;
use MaatwebsiteExcelConcernsWithHeadings;
use MaatwebsiteExcelConcernsWithCustomStartCell;
use MaatwebsiteExcelEventsAfterSheet;
use MaatwebsiteExcelConcernsWithEvents;
use MaatwebsiteExcelSheet;
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' => PhpOfficePhpSpreadsheetStyleAlignment::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() для объединения и выравнивания по центру ячеек первой строки с содержимым.