bonjour je suis nouveau sur phpexcel, et je me demandais s'il y avait un moyen d'envoyer Excel créé au téléchargement des clients sans l'enregistrer sur mon serveur ou de le supprimer juste après l'avoir téléchargé
j'essaie de créer un "bouton d'exportation" sur une page qui donnera à l'utilisateur un "pop-up" avec le fichier Excel qu'il veut que je viens de créer.
maintenant, après avoir créé le tableau, je le fais:
$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");
mais cela l'enregistre sur mon serveur
merci
Au lieu de l’enregistrer dans un fichier, enregistrez-le dans php://output
Docs :
$objWriter->save('php://output');
Cela l'enverra tel quel au navigateur.
Vous voulez ajouter des en-têtesDocs d’abord, comme c’est courant avec les téléchargements de fichiers, afin que le navigateur sache de quel type est ce fichier et comment il doit être nommé (le nom du fichier):
// 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');
Commencez par les en-têtes, puis par la sauvegarde. Pour les en-têtes Excel, consultez également la question suivante: Définition du type MIME pour un document Excel .
$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');
Utilisez cet appel
$objWriter->save('php://output');
Pour sortir la feuille XLS de la page sur laquelle vous vous trouvez, assurez-vous que la page sur laquelle vous vous trouvez n'a pas d'autre résultat d'écho, d'impression ou de sortie.
POUR UTILISATION XLSX
SET IN $ xlsName nom de XLSX avec extension. Exemple: $ 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');
POUR UTILISATION XLS
SET IN $ xlsName nom de XLS avec extension. Exemple: $ 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');
vous avez déjà résolu votre problème, j'espère que cela vous aidera.
tous les fichiers téléchargés commencent par une ligne vide, dans mon cas où il y a quatre lignes vides, et cela pose un problème. Peu importe si vous travaillez avec readfile();
ou save('php://output');
, cela peut être corrigé en ajoutant ob_start();
au début du script et od_end_clean();
seulement avant la readfile()
; ou save('php://output');
.
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');