web-dev-qa-db-fra.com

phpexcel à télécharger

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

75
Dvir Levy

Au lieu de l’enregistrer dans un fichier, enregistrez-le dans php://outputDocs :

$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 .

163
hakre
$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');
22
matino

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.

5
JoshStrange

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');
5
Rogerio de Moraes

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

4
 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
harsimer