Laravel-excel: рдПрдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ред рд╕рдВрднрд╛рд╡рд┐рдд рдбреЗрдЯрд╛ рджреВрд╖рд┐рдд рдпрд╛ рдЦрд░рд╛рдм рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдордИ 2018  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Maatwebsite/Laravel-Excel

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

  • [ x] рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо, рд╕рдорд╕реНрдпрд╛ Laravel Excel рд╕реЗ рдЕрд▓рдЧ рд╣реИред
  • [x] рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рджрд░реНрдЬ рдирд╣реАрдВ рд╣реИред
  • [ x] рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

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

  • рдкреАрдПрдЪрдкреА рд╕рдВрд╕реНрдХрд░рдг: 7.1
  • рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг: 5.5.*
  • рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг: ^3.0

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

FromQuery рд╡рд┐рдзрд┐ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ... рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб, XLSX рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдкрд░, рдХрд╛рд░реНрдпрд╛рд▓рдп рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ:
"рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдЦреЛрд▓ рд╕рдХрддрд╛рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рджреВрд╖рд┐рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рд╛рд░реВрдк рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ"

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рдпрд╣рд╛рдБ рдореЗрд░реА рд╡рд┐рдзрд┐ рд╣реИ

namespace Modules\Profile\Exports;

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use Modules\Profile\Entities\Profile;

class ProfileExport implements FromQuery
{
    use Exportable;

    public function __construct($range)
    {
        $this->start = $range['start'];
        $this->end = $range['end'];
    }

    public function query()
    {
      return Profile::query()->where('created_at', '>=', $this->start . ' 00:00:00')
                             ->where('created_at', '<=', $this->end . ' 23:59:59')
                             ->whereHas('user.roles', function($query){
                                  $query->where('id', 2);
                             });
    }
}

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╣рддреЗ рд╣реИрдВ

//$request->start = '2018-01-01';
//$request->end = '2018-05-01';

$range = ['start'=>$request->start, 'end'=>$request->end];
return (new ProfileExport($range))->download($request->start . '-' . $request->end .'-pet-parent-signups.xlsx');

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░:

рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:

рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИ рд▓реЗрдХрд┐рди рдПрдХреНрд╕реЗрд▓ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ

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

рдореИрдВрдиреЗ рд╡рд╛рдХреНрдкрдЯреБ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рджреЗрддрд╛ рд╣реИред

(https://user-images.githubusercontent.com/18451450/40511758-f61e6570-5f5d-11e8-9f37-0b594f60be59.png)

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

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдореИрдВ рдЗрд╕ рдмреЗрдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВред PHPSpreadSheet PHP рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЗ PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

// in controller
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');

рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

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

рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж рднреА :)

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд░реИрдкрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА PhpSpreadsheet рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PHPExcel рдХреЛ <?php рдЦреБрд▓реЗ рдЯреИрдЧ рдХреЗ рд╕рд╛рдордиреЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди ( ) рд╣реЛрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереАред рдЬреЛ рдЕрддреАрдд рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рдерд╛ред

рдЖрдк рдиреИрдиреЛ рдпрд╛ рд╡рд┐рдо рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рдЖрдкрдХреЛ PK рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рд╕реНрдкреЗрд╕ рджрд┐рдЦрд╛рдИ рджреЗ рддреЛ рдРрд╕реЗ рд╣реА
image
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдпрд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реЛред рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓рд╛ рдФрд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╣реЗ рд╕рдм, рдиреЗрддреГрддреНрд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

рдХреБрдЫ рдФрд░ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдмреАрдорд╛рд░ рд░рд┐рдкреЛрд░реНрдЯ рд╡рд╛рдкрд╕ред рдореИрдВ рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реБрдЖ рдФрд░ рдлрд┐рд░

рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмреЗрд╣рддрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ред рдореБрдЭреЗ рд░рд┐рдХреНрдд рдкрдВрдХреНрддрд┐ рдХрд╛ рд╕реНрд░реЛрдд рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рд╕реЗ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛

  • рдПрдХреНрд╕реЗрд▓ :: рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╛рдЗрд▓ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ
  • рд╡рд╛рдкрд╕реА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ (рднрдВрдбрд╛рд░рдг :: url ("рднрдВрдбрд╛рд░рдг / {$ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо}"));
    рдирдореВрдирд╛
    ```
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдирд┐рд░реНрдпрд╛рдд(рдЕрдиреБрд░реЛрдз $рдЕрдиреБрд░реЛрдз)
    {
    $filename = 'meal_list_'.date('YmdHis').'.xlsx';
     Excel::store(new MealExport($request), $filename, 'public');
     return redirect( Storage::url("storage/{$filename}" ));
}

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдореИрдВ рдЗрд╕ рдмреЗрдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВред PHPSpreadSheet PHP рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЗ PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

// in controller
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');

рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдореИрдВ рдЗрд╕ рдмреЗрдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВред PHPSpreadSheet PHP рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЗ PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

// in controller
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');

рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рдЗрд╕рдХрд╛ рд╕рдЯреАрдХ рдЙрддреНрддрд░ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдпрд╣ рд╕рдорд╛рдзрд╛рди:

ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');

рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рднреНрд░рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рднреА Xlsx/Xls рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
image

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╡рд┐рдЪрд╛рд░ ?

рдзрдиреНрдпрд╡рд╛рдж !

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдореИрдВ рдЗрд╕ рдмреЗрдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВред PHPSpreadSheet PHP рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЗ PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

// in controller
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');

рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рд▓рд╡ рдпреВ рдпрд╛рд░.. рддреБрдордиреЗ рдореЗрд░рд╛ рд╕рд┐рд░ рдмрдЪрд╛ рд▓рд┐рдпрд╛...

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА PhpSpreadsheet рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PHPExcel рдХреЛ <?php рдЦреБрд▓реЗ рдЯреИрдЧ рдХреЗ рд╕рд╛рдордиреЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди ( ) рд╣реЛрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереАред рдЬреЛ рдЕрддреАрдд рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рдерд╛ред

рдирдорд╕реНрддреЗ @patrickbrouwers
рдЖрдкрдХреЗ рдХрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрд╛рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ,
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ AJAX рдЕрдиреБрд░реЛрдз рдореЗрдВ responseType: 'blob' рдЬреЛрдбрд╝реЗрдВ (рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:

axios.post('/path/to/export', data, {
    responseType: 'blob',
})
.then(response => {
    const filename = 'file.xlsx';
    let blob = new Blob([response.data], {
        type: 'application/octet-stream',
    });

    if (typeof window.navigator.msSaveBlob !== 'undefined') {
        // IE workaround for "HTML7007: One or more blob URLs were
        // revoked by closing the blob for which they were created.
        // These URLs will no longer resolve as the data backing
        // the URL has been freed."
        window.navigator.msSaveBlob(blob, filename);
    } else {
        let blobURL = window.URL.createObjectURL(blob);
        let tempLink = document.createElement('a');
        tempLink.style.display = 'none';
        tempLink.href = blobURL;
        tempLink.download = filename;
        tempLink.click();
        window.URL.revokeObjectURL(blobURL);
    }
})

responseType: 'blob' рдмрд┐рдирд╛, рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдЦреБрд▓реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА

рдпрджрд┐ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрд╛рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ,
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ AJAX рдЕрдиреБрд░реЛрдз рдореЗрдВ responseType: 'blob' рдЬреЛрдбрд╝реЗрдВ (рдореИрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:

axios.post('/path/to/export', data, {
    responseType: 'blob',
})
.then(response => {
    const filename = 'file.xlsx';
    let blob = new Blob([response.data], {
        type: 'application/octet-stream',
    });

    if (typeof window.navigator.msSaveBlob !== 'undefined') {
        // IE workaround for "HTML7007: One or more blob URLs were
        // revoked by closing the blob for which they were created.
        // These URLs will no longer resolve as the data backing
        // the URL has been freed."
        window.navigator.msSaveBlob(blob, filename);
    } else {
        let blobURL = window.URL.createObjectURL(blob);
        let tempLink = document.createElement('a');
        tempLink.style.display = 'none';
        tempLink.href = blobURL;
        tempLink.download = filename;
        tempLink.click();
        window.URL.revokeObjectURL(blobURL);
    }
})

responseType: 'blob' рдмрд┐рдирд╛, рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдЦреБрд▓реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА

рдзрдиреНрдпрд╡рд╛рдж!! рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ рдмрдЪрд╛рдУ, рдореИрдВ рджреЗрдЦрддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ рдХрд┐ PHP рдХреЛрдб рдХреА рдХреМрди рд╕реА рдкрдВрдХреНрддрд┐ рдореЗрд░реА рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреВрд╖рд┐рдд рдХрд░рддреА рд╣реИ .. рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ axios рд╣реИ

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдореИрдВ рдЗрд╕ рдмреЗрдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджрд┐рди рдмрд┐рддрд╛рддрд╛ рд╣реВрдВред PHPSpreadSheet PHP рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЗ PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

// in controller
ob_end_clean(); // this
ob_start(); // and this
return Excel::download(new MyExport, 'file.xls');

рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

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

рдзрдиреНрдпрд╡рд╛рдж @Leenzuur , рдЖрдкрдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛! рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд░ рджрд┐рдпрд╛! рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣реИ рд▓реЗрдХрд┐рди @Leenzuur рд░рд╛рд╕реНрддрд╛, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ 10 рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП 10 рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ рд╣реИ, рддреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ 10 рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрдЬ рдореЗрд░реЗ рд╕рд╛рде рд╣реЛрдиреЗ рд▓рдЧреА рдФрд░ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдпрд╛рдд рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖред рдШрдВрдЯреЛрдВ рдХреЗ рд╢реЛрдз рдХреЗ рдмрд╛рдж @leenzuur рдХреЛрдб рдирдореВрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

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

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

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

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

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

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

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