Cabeçalho PHP xlsx

então isso funciona:

myphpfile.php:

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

esse arquivo php é chamado aqui e o download do PDF funciona bem:

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

mas isso não funciona:

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

Os arquivos .pdf e .xlsx estão na mesma pasta. Quando clico no link 'download', as janelas de download aparecem, salvo o arquivo, mas o arquivo não pode ser aberto. Isso me dá o seguinte erro:

O Excel não pode abrir o arquivo 'myfile.xlsx' porque o formato do arquivo ou a extensão do arquivo não é válido. Verifique se o arquivo não foi corrompido e se a extensão do arquivo corresponde ao formato do arquivo.

O arquivo abre bem quando eu abri-lo manualmente (ou seja, sem baixá-lo através do link)

Estou usando o WAMP, se isso é importante.

Qualquer ajuda é apreciada.

--- EDIT ---

Eu encontrei este pedaço de código no php.net:

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

então o código final se parece com isso e 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>

Obrigado a todos pelas respostas.

questionAnswers(3)

yourAnswerToTheQuestion