Olá,
como é possível anexar um arquivo excel gerado com a versão 3.1?
Na versão anterior (v.2) era possível através do método de criação sem "-> download ()"
Estou tentando desta forma, mas não funciona:
$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;
}
Eu tenho exatamente a mesma pergunta.
Eu encontrei uma solução ao mudar de protegido para público o método export () dentro do arquivo:
maatwebsite \ excel \ src \ Excel.php
na linha: 166
desta forma, o código pode ser:
`` ``
$ attach = Excel :: export (new TestExport (), $ filename);
[...]
$ mail = $ this-> from ('[email protected] ')
-> assunto ('anexo de teste')
-> markdown ('emails.test_mail')
-> anexar ($ this-> anexo,, ['as' => $ nome do arquivo]);
`` ``
Eu encontrei uma solução para fazê-lo funcionar sem ter que modificar a classe do Excel e seu método protegido. Você pode chamar getFile()
de Excel::download(/**/)
. O código é assim:
public function build()
{
return $this->markdown('emails.report')
->attach(
Excel::download(
new AuditReport($this->audit),
'report.xlsx'
)->getFile(), ['as' => 'report.xlsx']
);
}
Excel::download()
retorna um BinaryFileResponse
é por isso que ele não funciona diretamente, mas você pode pegar o arquivo.
Espero que ajude 😃
Eu encontrei uma solução para fazê-lo funcionar sem ter que modificar a classe do Excel e seu método protegido. Você pode chamar
getFile()
deExcel::download(/**/)
. O código é assim:public function build() { return $this->markdown('emails.report') ->attach( Excel::download( new AuditReport($this->audit), 'report.xlsx' )->getFile(), ['as' => 'report.xlsx'] ); }
Excel::download()
retorna umBinaryFileResponse
é por isso que ele não funciona diretamente, mas você pode pegar o arquivo.Espero que ajude
Cuidado com o diretório tmp do servidor, pois o arquivo é gravado no disco.
A exportação deve ser um método público.
Obrigado pessoal por se ajudarem! 👍
Aqui está como faço isso sem baixar / criar o arquivo:
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);
Eu encontrei uma solução para fazê-lo funcionar sem ter que modificar a classe do Excel e seu método protegido. Você pode chamar
getFile()
deExcel::download(/**/)
. O código é assim:public function build() { return $this->markdown('emails.report') ->attach( Excel::download( new AuditReport($this->audit), 'report.xlsx' )->getFile(), ['as' => 'report.xlsx'] ); }
Excel::download()
retorna umBinaryFileResponse
é por isso que ele não funciona diretamente, mas você pode pegar o arquivo.Espero que ajude smiley
Obrigado por isso, funcionou para mim.
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);
Muito obrigado. é trabalho para mim
Comentários muito úteis
Eu encontrei uma solução para fazê-lo funcionar sem ter que modificar a classe do Excel e seu método protegido. Você pode chamar
getFile()
deExcel::download(/**/)
. O código é assim:Excel::download()
retorna umBinaryFileResponse
é por isso que ele não funciona diretamente, mas você pode pegar o arquivo.Espero que ajude 😃