أهلا،
كيف يمكن إرفاق ملف إكسل تم إنشاؤه بالإصدار 3.1؟
في الإصدار السابق (v.2) كان من الممكن من خلال طريقة الإنشاء بدون "-> download ()"
أحاول بهذه الطريقة ، لكنها لا تعمل:
$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;
}
لدي نفس السؤال بالضبط.
لقد وجدت حلاً يتغير من أسلوب التصدير () المحمي إلى العام داخل الملف:
maatwebsite \ excel \ src \ Excel.php
على الصف: 166
بهذه الطريقة ، يمكن أن يكون الرمز:
""
$ attachment = Excel :: export (new TestExport ()، $ filename)؛
[...]
$ mail = $ this-> من ('[email protected] ')
-> الموضوع ("اختبار مرفق")
-> تخفيض السعر ('emails.test_mail')
-> attach ($ this-> attachment، ['as' => $ filename]) ؛
""
لقد وجدت حلاً لجعله يعمل دون الحاجة إلى تعديل فئة Excel وطريقتها المحمية. يمكنك استدعاء 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 وطريقتها المحمية. يمكنك استدعاء
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
لهذا السبب لا يعمل بشكل مباشر ، ولكن يمكنك الحصول على الملف.آمل أن يساعد
احترس من دير tmp للخادم على الرغم من أن الملف يتم كتابته على القرص.
يجب أن يكون التصدير طريقة عامة.
شكرا يا رفاق لمساعدة بعضهم البعض! 👍
إليك كيفية القيام بذلك بدون تنزيل / إنشاء الملف:
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);
لقد وجدت حلاً لجعله يعمل دون الحاجة إلى تعديل فئة Excel وطريقتها المحمية. يمكنك استدعاء
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
لهذا السبب لا يعمل بشكل مباشر ، ولكن يمكنك الحصول على الملف.أتمنى أن يساعد الابتسامة
شكرا على هذا ، لقد نجحت معي.
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);
شكرا جزيلا. إنه عمل بالنسبة لي
التعليق الأكثر فائدة
لقد وجدت حلاً لجعله يعمل دون الحاجة إلى تعديل فئة Excel وطريقتها المحمية. يمكنك استدعاء
getFile()
منExcel::download(/**/)
. يبدو الرمز هكذا:Excel::download()
بإرجاعBinaryFileResponse
لهذا السبب لا يعمل بشكل مباشر ، ولكن يمكنك الحصول على الملف.آمل أن يساعد 😃