Hallo, ich bin neu bei phpexcel und habe mich gefragt, ob es eine Möglichkeit gibt, das von mir erstellte Excel an den Client-Download zu senden, ohne es auf meinem Server zu speichern oder es direkt nach dem Herunterladen zu löschen
Ich versuche, eine "Export-Schaltfläche" auf einer Seite zu erstellen, die dem Benutzer ein "Popup" mit dem Excel gibt, das er gerade erstellt haben möchte.
Jetzt, nachdem ich die Tabelle erstellt habe, mache ich:
$objXLS->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
$objXLS->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);
$objXLS->getActiveSheet()->setTitle('Test Stats');
$objXLS->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objXLS, 'Excel5');
$objWriter->save(__DIR__."/test1.xls");
aber das speichert es auf meinem Server
Vielen Dank
header
Zeilen und die->save()
Aktion ausgeben . Sie müssen sich entscheiden zwischen a) Anzeigen einer Seite oder b) Anbieten eines Downloads. Beides funktioniert nicht einfach mit einem Skript. Sie können jedoch ein Skript für den Download und eines für die Seite erstellen. Wenn das Seitenskript ausgeführt wurde, leiten Sie zum Download-Skript um, wodurch der Browser den Dialog zum Speichern unter anbietet.Content-Length
Header bei der Verwendung festlegenphp://output
?$excel = new PHPExcel(); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="your_name.xls"'); header('Cache-Control: max-age=0'); // Do your stuff here $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5'); // This line will force the file to download $writer->save('php://output');
quelle
MIME
Typ in ändere,application/vnd.openxmlformats-officedocument.presentationml.presentation
wird die Datei auf mein System heruntergeladen, aber das wird gesagtFile can't be opened
. Die Datei funktionierte, als der Code sie auf den Server schrieb.FÜR XLSX-GEBRAUCH
SET IN $ xlsName Name von XLSX mit Erweiterung. Beispiel: $ xlsName = 'teste.xlsx';
$objPHPExcel = new PHPExcel(); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$xlsName.'"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output');
FÜR XLS-GEBRAUCH
SET IN $ xlsName Name von XLS mit Erweiterung. Beispiel: $ xlsName = 'teste.xls';
$objPHPExcel = new PHPExcel(); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$xlsName.'"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output');
quelle
MIME
Typ in ändere,application/vnd.openxmlformats-officedocument.presentationml.presentation
wird die Datei auf mein System heruntergeladen, aber das wird gesagtFile can't be opened
. Die Datei funktionierte, als der Code sie auf den Server schrieb.Verwenden Sie diesen Anruf
$objWriter->save('php://output');
Um das XLS-Blatt auf der Seite auszugeben, auf der Sie sich befinden, stellen Sie einfach sicher, dass die Seite, auf der Sie sich befinden, keine anderen Echos, Ausdrucke und Ausgaben hat.
quelle
MIME
Typ in ändere,application/vnd.openxmlformats-officedocument.presentationml.presentation
wird die Datei auf mein System heruntergeladen, aber das wird gesagtFile can't be opened
. Die Datei funktionierte, als der Code sie auf den Server schrieb.header('Content-type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="file.xlsx"'); header('Cache-Control: max-age=0'); header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header ('Cache-Control: cache, must-revalidate'); header ('Pragma: public'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');
quelle
MIME
Typ in ändere,application/vnd.openxmlformats-officedocument.presentationml.presentation
wird die Datei auf mein System heruntergeladen, aber das wird gesagtFile can't be opened
. Die Datei funktionierte, als der Code sie auf den Server schrieb.Möglicherweise haben Sie Ihr Problem bereits gelöst. Ich hoffe, dies hilft Ihnen.
Alle heruntergeladenen Dateien beginnen mit einer leeren Zeile, in meinem Fall mit vier leeren Zeilen, und es entsteht ein Problem. Egal, ob Sie mit
readfile();
oder arbeitensave('php://output');
, dies kann durch Hinzufügenob_start();
am Anfang des Skripts undob_end_clean();
kurz vor demreadfile()
; odersave('php://output');
.quelle
ob_end_clean()
notod_end_clean()