【问题标题】:Laravel excel add complex headers to an exportLaravel excel 向导出添加复杂的标题
【发布时间】:2021-09-11 12:45:44
【问题描述】:

我需要通过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"]

有没有办法存档这个任务?

【问题讨论】:

    标签: laravel-5 maatwebsite-excel laravel-excel


    【解决方案1】:

    最后,我成功了。添加它,因为它对其他人有用。

    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() 将第一行单元格与内容合并并居中对齐。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      相关资源
      最近更新 更多