Hey,
ja haben wir, siehe wie folgt. Kann man aus Dialogfunktionen und aus Regelausführungsfunktionen nutzen.
ACHTUNG: Der Aufruf von Utility:: funktioniert glaub ich ab 2024.1 nicht mehr. Muss man den Pfad klassisch zusammenbauen.
private function createExcel($preparedArray) {
require_once(Utility::getJobRouterPath() . '\library\vendor\phpoffice\phpspreadsheet\src\Bootstrap.php');
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$spreadsheet->getActiveSheet()->fromArray($preparedArray);
foreach ($spreadsheet->getActiveSheet()->getColumnIterator() as $column) {
$spreadsheet->getActiveSheet()->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
}
ob_start();
(new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet))->save('php://output');
$tempFile = $this->getFullTempPath() . DIRECTORY_SEPARATOR . 'my_filename.xlsx';
file_put_contents($tempFile, ob_get_clean());
$this->attachFile($tempFile, 'MY_PT_FIELD');
unlink($tempFile);
}
Mir ist nicht ganz klar, was du mit lokaler Umwandlung meinst, aber du kannst mit dieser Bibliothek
https://phpspreadsheet.readthedocs.io/en/latest/
ja einfach eine Excel-Datei erzeugen, in ein Anhangsfeld speichern und mit einem E-Mail-Schritt verse...