如何创建一个Excel文件并附加在邮件中而不存储在本地磁盘中

时间:2019-01-03 09:19:02

标签: laravel maatwebsite-excel

使用maatwebsite,我必须生成“ xlsx”文件,并通过可邮寄或直接邮件附件将其附加到电子邮件中。

默认情况下,文件存储在不需要的存储文件夹中。

忽略脚本末尾的导出或下载方法,并在变量中分配了Excel :: create。

$file = Excel::create($fileName, function($excel) use($valuesInArray) {
    $excel->sheet('Sheetname', function($sheet) use($valuesInArray) {
        $sheet->fromArray($valuesInArray);
    });
});

Mail::send('email.documents_export',["user"=>"Albert", "clientName" => "AAA"],function($m) use($file){
    $m->to('albert@aaa.com')->subject('Document Export');
    $m->attach($file->store("xlsx",false,true)['full']);
});

文件必须可用于附件,而不能存储在任何地方。

1 个答案:

答案 0 :(得分:0)

应该使用“字符串”而不是“存储”方法。

这是库代码中“字符串”方法的作用:

ob_start();

$this->writer->save('php://output');

return ob_get_clean();

因此,在您的电子邮件代码中,您应该这样写:

$file = Excel::create($fileName, function($excel){
   // Your code here
});

Mail::send('email.documents_export',["user"=>"Albert", "clientName" => AAAA"],function($m) use($file){
    $m->to('albert@aaa.com')->subject('Document Export');
    $m->attachData($file->string("xlsx"), $fileName);
});

我花了几个小时才能解决这个问题...官方文档没有提到这种方法。

再见= D