Frage phpexcel zum Herunterladen


hallo ich bin neu bei phpexcel, und ich frage mich, ob es eine Möglichkeit gibt, das Excel, das ich erstellt habe, an den Client-Download zu senden, ohne es auf meinem Server zu speichern oder direkt nach dem Herunterladen zu löschen

Ich versuche, eine "Export-Schaltfläche" auf einer Seite zu erstellen, die dem Benutzer ein "Pop-up" 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

Danke


75
2017-12-19 19:11


Ursprung


Antworten:


Anstatt es in einer Datei zu speichern, speichern Sie es in php://outputDokumente:

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

Dies sendet es AS-IS an den Browser.

Sie möchten einige hinzufügen KopfzeilenDokumente Erstens, wie es bei Dateidownloads üblich ist, weiß der Browser, welcher Typ diese Datei ist und wie sie benannt werden soll (der Dateiname):

// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');

// It will be called file.xls
header('Content-Disposition: attachment; filename="file.xls"');

// Write file to the browser
$objWriter->save('php://output');

Zuerst die Kopfzeilen und dann das Speichern. Für die Excel-Header sehen Sie auch die folgende Frage: Mime-Typ für Excel-Dokument festlegen.


157
2017-12-19 19:15



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

21
2017-12-19 19:17



Verwenden Sie diesen Anruf

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

Um das XLS-Blatt auf die Seite auszugeben, auf der Sie sich gerade befinden, müssen Sie sicherstellen, dass die Seite, auf der Sie sich befinden, keine anderen Ausgaben von Echo, Druck und Ausgabe hat.


5
2017-12-19 19:18



FÜR XLSX GEBRAUCH

EINSTELLEN $ 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 VERWENDUNG

EINSTELLEN $ xlsName Name aus 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');

5
2017-12-10 15:06



Vielleicht hast du dein Problem bereits gelöst, egal wie ich hoffe, dass dir das weiterhilft.

Alle heruntergeladenen Dateien beginnen mit einer leeren Zeile, in meinem Fall sind vier leer Linien, und es macht ein Problem. Egal, mit wem du arbeitest readfile(); oder save('php://output');, Dies kann durch Hinzufügen behoben werden ob_start(); Bei der Beginn des Skripts und od_end_clean(); kurz vor dem readfile(); oder save('php://output');.


4
2017-09-20 18:11



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

3
2018-06-18 18:04