Laravel-excel: [سؤال] إرفاق ولدت اكسل مع V 3.1

تم إنشاؤها على ٢٢ نوفمبر ٢٠١٨  ·  8تعليقات  ·  مصدر: Maatwebsite/Laravel-Excel

إصدارات

  • إصدار PHP: 7.1.7
  • إصدار Laravel: 5.7.13
  • إصدار الحزمة: 3.1.1

وصف

أهلا،
كيف يمكن إرفاق ملف إكسل تم إنشاؤه بالإصدار 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;
}

التعليق الأكثر فائدة

لقد وجدت حلاً لجعله يعمل دون الحاجة إلى تعديل فئة 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 لهذا السبب لا يعمل بشكل مباشر ، ولكن يمكنك الحصول على الملف.

آمل أن يساعد 😃

ال 8 كومينتر

لدي نفس السؤال بالضبط.

لقد وجدت حلاً يتغير من أسلوب التصدير () المحمي إلى العام داخل الملف:

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

شكرا جزيلا. إنه عمل بالنسبة لي

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات