Как зарегистрироваться после листа (зарегистрировать) события в Laravel Excel 3.0 - PullRequest
0 голосов
/ 19 октября 2018

Я использовал laravel excel версии 2.1 ранее.В версии 2.0 проектирование ячеек было довольно простым.Поэтому я начал новый проект в последней версии laravel (5.5) и был шокирован, узнав, что мы не можем использовать laravel excel версии 2.0 в этой версии laravel.Я установил последнюю версию laravel-excel 3.1, и стилизация листов полностью отличается от версии larave-excel версии 2.0, поэтому я копаюсь в документации. Я нашел эти пользовательские макросы для стилизации листа, но он не работал.

Вот ссылка на используемый пакет laravel excel

Laravel Excel

Вот мой код класса экспорта

Класс экспорта

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\AfterSheet;
use Maatwebsite\Excel\Concerns\WithEvents;

class CollectionExport implements WithEvents,FromCollection, WithHeadings, ShouldAutoSize
{
    use Exportable;


    /*************** Alternate Method **************************/


    //  public function registerEvents(): array
    // {
    //     return [
    //         AfterSheet::class    => function(AfterSheet $event) {
    //             $cellRange = 'A1:W1'; // All headers
    //             $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);
    //         },
    //     ];
    // }

     public function registerEvents(): array
    {
        return [
            BeforeExport::class  => function(BeforeExport $event) {
                $event->writer->setCreator('Patrick');
            },
            AfterSheet::class    => function(AfterSheet $event) {
                $event->sheet->setOrientation(\PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::ORIENTATION_LANDSCAPE);

                $event->sheet->styleCells(
                    'A1:W1',
                    [
                        'borders' => [
                            'outline' => [
                                'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
                                'color' => ['argb' => 'FFFF0000'],
                            ],
                        ]
                    ]
                );
            },
        ];
    }

    public function collection()
    {
        return collect([
            [
                'name' => 'Povilas',
                'surname' => 'Korop',
                'email' => 'povilas@laraveldaily.com',
                'twitter' => '@povilaskorop'
            ],
            [
                'name' => 'Taylor',
                'surname' => 'Otwell',
                'email' => 'taylor@laravel.com',
                'twitter' => '@taylorotwell'
            ]
        ]);
    }

    public function headings(): array
    {
        return [
            'Name',
            'Surname__',
            'Email',
            'Twitter',
        ];
    }



}

Я вызываю это по определенному маршруту

return Excel::download(new CollectionExport(), 'export.xlsx');

Этот метод registerEvents не влияет на создаваемый файл Excel. Я пропустилчто-то или делаешь неправильно?Заранее спасибо !!!PS: - Я попробовал оба метода для стилизации, ни один из них не влиял на стиль файла Excel

1 Ответ

0 голосов
/ 15 июля 2019

Вы можете исправить это, используя:

-> use Maatwebsite\Excel\Events\AfterSheet;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...