Laravel-excel: [рдкреНрд░рд╢реНрди] рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕реЗрд▓ рдХреЛ рд╡реА рей.рез рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ

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

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

  • рдкреАрдПрдЪрдкреА рд╕рдВрд╕реНрдХрд░рдг: 7.1.7
  • рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг: 5.7.13
  • рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг: 3.1

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

рдирдорд╕реНрддреЗ,
рд╕рдВрд╕реНрдХрд░рдг 3.1 рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг (v.2) рдореЗрдВ "->рдбрд╛рдЙрдирд▓реЛрдб ()" рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рдерд╛

рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

$filename = 'text.xlsx';
$attachment = Excel::download(new TestExport(), $filename);

\Mail::to('[email protected]')->send(new SendMail($attachment));

# Inside SendMail.php
public function __construct($attachment)
{
    $this->attachment = $attachment;
}

public function build()
{

    $mail = $this->from('[email protected]')
        ->subject('test attachment')
        ->markdown('emails.test_mail')
        ->attach($this->attachment);

    return $mail;
}

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

рдореБрдЭреЗ рдПрдХреНрд╕реЗрд▓ рдХреНрд▓рд╛рд╕ рдФрд░ рдЗрд╕рдХреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИред рдЖрдк getFile() рд╕реЗ Excel::download(/**/) рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

public function build()
    {
        return $this->markdown('emails.report')
            ->attach(
                Excel::download(
                    new AuditReport($this->audit), 
                    'report.xlsx'
                )->getFile(), ['as' => 'report.xlsx']
            );
    }

Excel::download() рдПрдХ BinaryFileResponse Excel::download() рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реАрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ

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

рдореЗрд░реЗ рдкрд╛рд╕ рдареАрдХ рд╡рд╣реА рд╕рд╡рд╛рд▓ рд╣реИред

рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рд░реНрдпрд╛рдд() рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдмрджрд▓ рд░рд╣рд╛ рд╣реИ:

maatрд╡реЗрдмрд╕рд╛рдЗрдЯ\рдПрдХреНрд╕реЗрд▓\src\Excel.php

рдкрдВрдХреНрддрд┐ рдореЗрдВ: резремрем

рдЗрд╕ рддрд░рд╣, рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
````
$ рдЕрдиреБрд▓рдЧреНрдирдХ = рдПрдХреНрд╕реЗрд▓ :: рдирд┐рд░реНрдпрд╛рдд (рдирдпрд╛ рдЯреЗрд╕реНрдЯрдПрдХреНрд╕рдкреЛрд░реНрдЯ (), $ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо);

[...]

$ рдореЗрд▓ = $ рдпрд╣-> рд╕реЗ ('@example.com' рд╕реЗ)
-> рд╡рд┐рд╖рдп ('рдЯреЗрд╕реНрдЯ рдЕрдЯреИрдЪрдореЗрдВрдЯ')
-> рдорд╛рд░реНрдХрдбрд╛рдЙрди ('рдИрдореЗрд▓реНрд╕.рдЯреЗрд╕реНрдЯ_рдореЗрд▓')
-> рдЕрдЯреИрдЪ ($ рдпрд╣-> рдЕрдЯреИрдЪрдореЗрдВрдЯ, ['as' => $filename]);
````

рдореБрдЭреЗ рдПрдХреНрд╕реЗрд▓ рдХреНрд▓рд╛рд╕ рдФрд░ рдЗрд╕рдХреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИред рдЖрдк getFile() рд╕реЗ Excel::download(/**/) рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

public function build()
    {
        return $this->markdown('emails.report')
            ->attach(
                Excel::download(
                    new AuditReport($this->audit), 
                    'report.xlsx'
                )->getFile(), ['as' => 'report.xlsx']
            );
    }

Excel::download() рдПрдХ BinaryFileResponse Excel::download() рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реАрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рдПрдХреНрд╕реЗрд▓ рдХреНрд▓рд╛рд╕ рдФрд░ рдЗрд╕рдХреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИред рдЖрдк getFile() рд╕реЗ Excel::download(/**/) рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

public function build()
    {
        return $this->markdown('emails.report')
            ->attach(
                Excel::download(
                    new AuditReport($this->audit), 
                    'report.xlsx'
                )->getFile(), ['as' => 'report.xlsx']
            );
    }

Excel::download() рдПрдХ BinaryFileResponse Excel::download() рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реАрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА

рд╕рд░реНрд╡рд░ рдХреЗ tmp dir рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИред

рдирд┐рд░реНрдпрд╛рдд рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб/рдмрдирд╛рдП рдмрд┐рдирд╛ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ:

use Maatwebsite\Excel\Excel as BaseExcel;
use Maatwebsite\Excel\Facades\Excel;

...

$filename = "{$this->po->po_memo}.xlsx";
$attachment = Excel::raw(new PurchaseOrderLinesExport($this->po), BaseExcel::XLSX);
$subject = "Purchase Order Invoice"

return $this->from($this->po->employee->email)
            ->subject($subject)
            ->view('emails.pom.send')
            ->text('emails.pom.send')
            ->attachData($attachment, $filename);

рдореБрдЭреЗ рдПрдХреНрд╕реЗрд▓ рдХреНрд▓рд╛рд╕ рдФрд░ рдЗрд╕рдХреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИред рдЖрдк getFile() рд╕реЗ Excel::download(/**/) рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

public function build()
    {
        return $this->markdown('emails.report')
            ->attach(
                Excel::download(
                    new AuditReport($this->audit), 
                    'report.xlsx'
                )->getFile(), ['as' => 'report.xlsx']
            );
    }

Excel::download() рдПрдХ BinaryFileResponse Excel::download() рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реАрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдорд╛рдЗрд▓реА рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ

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

use Maatwebsite\Excel\Excel as BaseExcel;
use Maatwebsite\Excel\Facades\Excel;

...

$filename = "{$this->po->po_memo}.xlsx";
$attachment = Excel::raw(new PurchaseOrderLinesExport($this->po), BaseExcel::XLSX);

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рд╣реИ

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

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

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

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

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

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

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