Laravel-excel: [PERTANYAAN] Lampirkan excel yang dihasilkan dengan V 3.1

Dibuat pada 22 Nov 2018  ·  8Komentar  ·  Sumber: Maatwebsite/Laravel-Excel

Versi

  • Versi PHP: 7.1.7
  • Versi Laravel: 5.7.13
  • Versi paket: 3.1

Keterangan

Halo,
bagaimana mungkin melampirkan file excel yang dihasilkan dengan versi 3.1?

Pada versi sebelumnya (v.2) dimungkinkan melalui metode create tanpa "->download()"

Saya mencoba dengan cara ini, tetapi tidak berhasil:

$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;
}

Komentar yang paling membantu

Saya telah menemukan solusi untuk membuatnya berfungsi tanpa harus memodifikasi kelas Excel dan metode yang dilindungi. Anda dapat menelepon getFile() dari Excel::download(/**/) . Kodenya terlihat seperti ini:

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

Excel::download() mengembalikan BinaryFileResponse itu sebabnya tidak bekerja secara langsung, tetapi Anda dapat mengambil file.

Semoga membantu

Semua 8 komentar

Saya memiliki pertanyaan yang sama persis.

Saya telah menemukan solusi yang mengubah dari protected ke public metode export() di dalam file:

maatwebsite\excel\src\Excel.php

di baris: 166

dengan cara ini, kode dapat menjadi:
````
$attachment = Excel::export(new TestExport(), $filename);

[...]

$mail = $this->from('[email protected]')
-> subjek('test lampiran')
-> penurunan harga('email.test_mail')
->attach($this->attachment, , ['as' => $filename]);
````

Saya telah menemukan solusi untuk membuatnya berfungsi tanpa harus memodifikasi kelas Excel dan metode yang dilindungi. Anda dapat menelepon getFile() dari Excel::download(/**/) . Kodenya terlihat seperti ini:

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

Excel::download() mengembalikan BinaryFileResponse itu sebabnya tidak bekerja secara langsung, tetapi Anda dapat mengambil file.

Semoga membantu

Saya telah menemukan solusi untuk membuatnya berfungsi tanpa harus memodifikasi kelas Excel dan metode yang dilindungi. Anda dapat menelepon getFile() dari Excel::download(/**/) . Kodenya terlihat seperti ini:

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

Excel::download() mengembalikan BinaryFileResponse itu sebabnya tidak bekerja secara langsung, tetapi Anda dapat mengambil file.

Semoga membantu

Hati-hati dengan dir tmp server karena file akan ditulis ke disk.

Ekspor harus menjadi metode publik.

Terima kasih teman-teman untuk saling membantu! 👍

Inilah cara saya melakukannya tanpa mengunduh/membuat file:

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);

Saya telah menemukan solusi untuk membuatnya berfungsi tanpa harus memodifikasi kelas Excel dan metode yang dilindungi. Anda dapat menelepon getFile() dari Excel::download(/**/) . Kodenya terlihat seperti ini:

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

Excel::download() mengembalikan BinaryFileResponse itu sebabnya tidak bekerja secara langsung, tetapi Anda dapat mengambil file.

Semoga membantu smiley

Terima kasih untuk ini, itu berhasil untuk saya.

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);

Terima kasih banyak. itu bekerja untuk saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat