Hallo,
Wie ist es möglich, eine mit der Version 3.1 generierte Excel-Datei anzuhängen?
In der vorherigen Version (v.2) war es durch die Methode create ohne "->download()" möglich
Ich versuche es so, aber es funktioniert nicht:
$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;
}
Ich habe genau die gleiche Frage.
Ich habe eine Lösung gefunden, die die Methode export() in der Datei von geschützt zu öffentlich ändert:
maatwebsite\excel\src\Excel.php
in Reihe: 166
Auf diese Weise kann der Code sein:
````
$attachment = Excel::export(new TestExport(), $filename);
[…]
$mail = $this->from('[email protected]')
->Betreff('Anhang testen')
->Markdown('emails.test_mail')
->attach($this->attachment, , ['as' => $Dateiname]);
````
Ich habe eine Lösung gefunden, damit es funktioniert, ohne die Excel-Klasse und ihre geschützte Methode ändern zu müssen. Sie können getFile()
von Excel::download(/**/)
aus anrufen. Der Code sieht so aus:
public function build()
{
return $this->markdown('emails.report')
->attach(
Excel::download(
new AuditReport($this->audit),
'report.xlsx'
)->getFile(), ['as' => 'report.xlsx']
);
}
Excel::download()
gibt ein BinaryFileResponse
, deshalb funktioniert es nicht direkt, aber Sie können die Datei abrufen.
Hoffe es hilft 😃
Ich habe eine Lösung gefunden, damit es funktioniert, ohne die Excel-Klasse und ihre geschützte Methode ändern zu müssen. Sie können
getFile()
vonExcel::download(/**/)
aus anrufen. Der Code sieht so aus:public function build() { return $this->markdown('emails.report') ->attach( Excel::download( new AuditReport($this->audit), 'report.xlsx' )->getFile(), ['as' => 'report.xlsx'] ); }
Excel::download()
gibt einBinaryFileResponse
, deshalb funktioniert es nicht direkt, aber Sie können die Datei abrufen.Ich hoffe es hilft
Achten Sie jedoch auf das tmp-Verzeichnis des Servers, wenn die Datei auf die Festplatte geschrieben wird.
Der Export sollte eine öffentliche Methode sein.
Danke Jungs, dass ihr euch gegenseitig geholfen habt! 👍
So mache ich es, ohne die Datei herunterzuladen / zu erstellen:
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);
Ich habe eine Lösung gefunden, damit es funktioniert, ohne die Excel-Klasse und ihre geschützte Methode ändern zu müssen. Sie können
getFile()
vonExcel::download(/**/)
aus anrufen. Der Code sieht so aus:public function build() { return $this->markdown('emails.report') ->attach( Excel::download( new AuditReport($this->audit), 'report.xlsx' )->getFile(), ['as' => 'report.xlsx'] ); }
Excel::download()
gibt einBinaryFileResponse
, deshalb funktioniert es nicht direkt, aber Sie können die Datei abrufen.Hoffe es hilft smiley
Danke dafür, bei mir hat es funktioniert.
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);
Danke vielmals. es ist arbeit für mich
Hilfreichster Kommentar
Ich habe eine Lösung gefunden, damit es funktioniert, ohne die Excel-Klasse und ihre geschützte Methode ändern zu müssen. Sie können
getFile()
vonExcel::download(/**/)
aus anrufen. Der Code sieht so aus:Excel::download()
gibt einBinaryFileResponse
, deshalb funktioniert es nicht direkt, aber Sie können die Datei abrufen.Hoffe es hilft 😃