Odeílání phpoffice PhpSpreadsheet do e-mailu

Sejber
Člen | 10
+
0
-

Ahoj,
pro generování XLSX souborů používám phpoffice PhpSpreadsheet.

Excel to hezky vygeneruje, ale potřebuju ho odeslat e-mailem. V současné době ideálně aniž by se uložil na FTP.

$attachment = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, ‚Xlsx‘);

Když zkusím klasicky $this->message->addAttachment($attachment); tak mi to padá na tom, že basename() expects parameter 1 to be string, object given.

Nejspíš tam posílám ten dokument ve špatném formátu.

Poradil by někdo?

Díky

David Matějka
Moderator | 6445
+
0
-

myslim, ze bez ulozeni do nejakeho temp souboru to nepujde

iguana007
Člen | 970
+
+1
-

Jedine asi takto:

$objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, ‚Xlsx‘);
ob_start();
$objWriter->save('php://output');
$attachment = ob_get_clean();
$this->message->addAttachment($attachment);
David Matějka
Moderator | 6445
+
+2
-

@iguana007 coz ve skutecnosti taky vytvori temp soubor: https://github.com/…ter/Xlsx.php#L179 :)

iguana007
Člen | 970
+
0
-

David Matějka napsal(a):

@iguana007 coz ve skutecnosti taky vytvori temp soubor: https://github.com/…ter/Xlsx.php#L179 :)

Vidis, tak moc do hloubky jsem uz nesel, takze smolicek :)))

Sejber
Člen | 10
+
+1
-

iguana007 napsal(a):

Jedine asi takto:

$objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, ‚Xlsx‘);
ob_start();
$objWriter->save('php://output');
$attachment = ob_get_clean();
$this->message->addAttachment($attachment);

Díky, tohle řešení bude nakonec vyhovovat. Už nám to funguje :-)