80 votes

phpexcel à télécharger

Bonjour, je suis nouveau dans Phpexcel, et je me demandais s'il y avait un moyen d'envoyer le fichier excel que j'ai créé au client pour le télécharger sans le sauvegarder sur mon serveur ou de le supprimer juste après qu'il l'ait téléchargé.

J'essaie de créer un "bouton d'exportation" sur une page qui donnera à l'utilisateur une "pop-up" avec l'Excel qu'il veut et que je viens de créer.

Maintenant, après avoir créé la table, je 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.

3voto

harsimer Points 55
 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');

0 votes

J'essaie de créer un PPT à l'aide de PHPPowerpoint. J'ai suivi exactement les étapes mentionnées, mais j'ai changé le nom du fichier. MIME Type à application/vnd.openxmlformats-officedocument.presentationml‌​.presentation il télécharge le fichier sur mon système mais dit que File can't be opened . Le fichier fonctionnait lorsque le code l'écrivait sur le serveur.

0voto

user3514092 Points 131

J'ai essayé le $writer->save('php://output'); proposé par la plupart des réponses.

Mais il s'agissait de télécharger un fichier corrompu.

Pour le réparer, j'ai dû faire ça :

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    header('Content-type: application/vnd.ms-excel');
    header('Content-Disposition: attachment; filename="filename.xlsx"');
    header('Cache-Control: max-age=0');
    $path = 'path/to/temp/file.xlsx';
    // save content to temporary file
    $objWriter->save($path);
    // This header was key to me, in order to get it working
    header("Content-Length: ".filesize($path));
    // output file content
    readfile($path);
    // delete temporary file
    unlink($path);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X