PHP xlsx encabezado

así que esto funciona:

myphpfile.php

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

ese archivo php se llama aquí y la descarga de PDF funciona bien:

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

pero esto no funciona:

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

Los archivos .pdf y .xlsx están en la misma carpeta. Cuando hago clic en el enlace 'descargar', aparece la ventana de descarga, guardo el archivo, pero el archivo no se puede abrir. Me da el siguiente error:

Excel no puede abrir el archivo 'myfile.xlsx' porque el formato o la extensión del archivo no son válidos. Verifique que el archivo no haya sido dañado y que la extensión del archivo coincida con el formato del archivo.

El archivo se abre bien cuando lo abro manualmente (es decir, sin descargarlo a través del enlace)

Estoy usando WAMP, si eso es importante.

Cualquier ayuda es apreciada.

--- EDITAR ---

He encontrado esta pieza de código en php.net:

<code>ob_clean();
flush();
</code>

Así que el código final se ve así y funciona:

<code>$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);
</code>

Gracias a todos por las respuestas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta