Laravel-excel: [рдкреНрд░рд╢реНрди] рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рдкрд╣рд▓реЗ рдирдП рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдлрд╝рд░ре░ 2019  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Maatwebsite/Laravel-Excel

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

  • PHP рд╕рдВрд╕реНрдХрд░рдг: 7.2
  • рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг: 5.7
  • рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг: 3.1

рд╡рд┐рд╡рд░рдг

рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рдореИрдВ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрдВрджрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ function resisterEvents() рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдПрдХ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреА рд╣реИ рдФрд░ рдПрдХ рд╢реАрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

    /**
     * <strong i="16">@return</strong> array
     */
    public function registerEvents(): array
    {
        return [
            BeforeWriting::class  => function(BeforeWriting $event) {
                $event->writer->reopen(storage_path('app/public/files/mytemplate.xlsx'),Excel::XLSX);
                $event->writer->getSheetByIndex(0);
                return $event->getWriter()->getSheetByIndex(0);
            }
        ];
    }

рдХреБрдЫ рд╕реБрдЭрд╛рд╡?

рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА

рдореИрдВрдиреЗ function resisterEvents() рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓реНрдп рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛:

AfterSheet::class => function(AfterSheet $event) {
       $event->sheet->setCellValue('G2', 'Hello world');
}

рдФрд░ function query() рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

->reopen() рдПрдХ рдЖрдВрддрд░рд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП new LocalTemporaryFile(storage_path('app/public/files/mytemplate.xlsx')) рдкрд╛рд╕ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ (рдЯреЗрдореНрдкреНрд▓реЗрдЯ) рдХрд╛ рд╕рдВрдкрд╛рджрди рд╣рдорд╛рд░реЗ рд░реЛрдбрдореИрдк (рд╕рдВрд╕реНрдХрд░рдг 3.3) рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рд▓реАрдЬрд╝ рдбреЗрдЯ рдХреЗ рдмрд┐рдирд╛ред

рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реЗ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рдЕрдиреБрднрд╛рдЧ: https://laravel-excel.com/commercial-support рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдВрдд рдореЗрдВ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП 3.1.0 рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг 3.1.10 рдореЗрдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ reopen рдлрд╝рдВрдХреНрд╢рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдирдП рдЕрдкрдбреЗрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдФрд░ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрдкрд╛рджрди рдореЗрдВ рд╕реБрдзрд╛рд░ред

->reopen() рдПрдХ рдЖрдВрддрд░рд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП new LocalTemporaryFile(storage_path('app/public/files/mytemplate.xlsx')) рдкрд╛рд╕ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ (рдЯреЗрдореНрдкреНрд▓реЗрдЯ) рдХрд╛ рд╕рдВрдкрд╛рджрди рд╣рдорд╛рд░реЗ рд░реЛрдбрдореИрдк (рд╕рдВрд╕реНрдХрд░рдг 3.3) рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рд▓реАрдЬрд╝ рдбреЗрдЯ рдХреЗ рдмрд┐рдирд╛ред

рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реЗ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рдЕрдиреБрднрд╛рдЧ: https://laravel-excel.com/commercial-support рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЗрд╕ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдпрд╣ рдЕрднреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдФрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ, рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рд░реНрдореБрд▓реЛрдВ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВ рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рдПрдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛

рдЕрдкрдбреЗрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреГрдкрдпрд╛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ

рдирдорд╕реНрдХрд╛рд░, @MarFelixред рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдордХрд╛рдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдореИрдЯрд╡реАрдХ рдХреЛрдб рдореЗрдВ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХреАред рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рдЪрд░рдг рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ:

  1. рдЕрдкрдиреА Export Excel рдХрдХреНрд╖рд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА download рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ)
  2. Excel рд╡рд░реНрдЧ рдпрд╣ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ Writer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕ Writer рдореЗрдВ export рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
  3. Writer рдЕрдкрдирд╛ Export Writer рдЦреЛрд▓реЗрдВ (рдФрд░ BeforeExport рдИрд╡реЗрдВрдЯ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ), рдлрд┐рд░ рдПрдХ рдирдИ рд╢реАрдЯ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЕрдкрдиреА write рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
  4. write рд╡рд┐рдзрд┐ ( Writer рд╡рд░реНрдЧ) BeforeWriting рдИрд╡реЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреА рдФрд░ XLSX рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦреЗрдЧреА

рдЗрд╕рд▓рд┐рдП BeforeWriting рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ BeforeExport рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдПрдХ рдирдИ рд╢реАрдЯ рдореЗрдВред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рд░реНрдпрд╛рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдзреНрд╡рдЬ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрдпрди рд╕реЗ)ред рдЗрд╕ рддрд░рд╣ рдпрд╣ рдЪрд░рдг 2 рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдлрд┐рд░, BeforeWriting рдореИрдВ рдзреНрд╡рдЬ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд╛рдВрдЫрд┐рдд рд╢реАрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕ рдкрд░ export рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред

рд╡рд╣ рдХреЛрдб рд╣реИ:

public function collection()
{
    if ($this->calledByEvent) { // flag
        return $this->myCollectionToExport;
    }

    return collect([]);
}

public function registerEvents(): array
{
    return [
        BeforeWriting::class => function(BeforeWriting $event) {
            $templateFile = new LocalTemporaryFile(storage_path('app/public/files/mytemplate.xlsx'));
            $event->writer->reopen($templateFile, Excel::XLSX);
            $event->writer->getSheetByIndex(0);

            $this->calledByEvent = true; // set the flag
            $event->writer->getSheetByIndex(0)->export($event->getConcernable()); // call the export on the first sheet

            return $event->getWriter()->getSheetByIndex(0);
        },
    ];
}

download рдФрд░ write рддрд░реАрдХреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ Maatwebsite\Excel\Writer , рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
3 / 5 - 1 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pamekar picture pamekar  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alejandri picture alejandri  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amine8ghandi8amine picture amine8ghandi8amine  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ellej16 picture ellej16  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vandolphreyes picture vandolphreyes  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ