Esatto, quello corregge il fatto di scaricarlo e non visualizzarlo.

Ora ho altri problemi:

con quella intestazione se genero un file .xls all'apertura excel 2010 mi da questo avviso:

"Il formato del file che si sta cercando di aprire è diverso da quello specificato nell'estensione del file...Aprire il file ora?"

Aprendolo è tutto corretto, intestazioni e dati.

Ma perchè mi restituisce questo avviso?

Ho provato anche altri header:

Codice PHP:
header("Content-Type: application/text");
header("Content-type: text/x-csv");
header("Content-type: text/csv");
header("Content-type: application/csv");
header ("Content-Type: application/vnd.ms-excel"); 
Ma il risultato è lo stesso.

Qual è l'header corretto per creare un file in .xls?
Eventualmente posso optare per esportare i dati in .csv dato che non penso che in excel poi la lettura cambi molto.