PHP xlsx en-tête

donc cela fonctionne:

myphpfile.php:

<?php
header('Content-disposition: attachment; filename=myfile.pdf');
header('Content-type: application/pdf');
readfile('myfile.pdf');
?> 

que le fichier php qui est appelé ici et le téléchargement de PDF fonctionne très bien:

<a class = "oglasavanje" href = "../../cjenik/myphpfile.php">download</a><br/>

mais cela ne fonctionne pas:

<?php
header('Content-disposition: attachment; filename=myfile.xlsx');
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
readfile('myfile.xlsx');
?>

à la fois .pdf et .xlsx fichiers sont dans le même dossier. Quand je clique sur le lien "télécharger" le téléchargement de windows s'affiche, j'ai enregistrer le fichier, mais le fichier ne peut pas être ouvert. Il me donne l'erreur suivante:

Excel ne peut pas ouvrir le fichier 'myfile.xlsx" parce que le format de fichier ou
l'extension de fichier n'est pas valide. Vérifiez que le fichier n'a pas été
corrompu et que l'extension du fichier correspond au format du fichier.

Le fichier s'ouvre bien quand je l'ouvre manuellement (c'est à dire sans le télécharger via le lien)

J'utilise WAMP, si c'est de l'importance.

Toute aide est appréciée.

--- EDIT ---

J'ai trouvé ce morceau de code php.net:

ob_clean();
flush();

donc le code final ressemble à ceci et cela fonctionne:

$file = "myfile.xlsx";
header('Content-disposition: attachment; filename='.$file);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush(); 
readfile($file);

Merci à tous pour les réponses.

Calculez-vous et envoyez la taille du fichier?
Aussi, son utile de connaître les navigateurs, il échoue. IE a été connu pour avoir certains problèmes de téléchargement de fichiers de certains types dans certaines conditions.
Je n'ai pas calculer et envoyer la taille du fichier (et je ne sais pas comment le faire). C'est à défaut dans Firefox.
de le lire et de compter les octets. Il y a un gars en dessous de parler de certains autres en-têtes qui pourraient vous aider.

OriginalL'auteur GTCrais | 2012-04-17