De acordo com seu código,
$row[1]
é "o nome do arquivo". O cabeçalho do tipo de conteúdo deve conter o tipo de conteúdo em vez disso, ou seja, o tipo mime do arquivo, por exemplo:header('Content-type: application/pdf');
Se você quiser adicionar um nome de arquivo:
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$row[1]);
print $data;
Certifique-se de
$data
é o conteúdo do arquivo, algo que você pode pegar de readfile()
por exemplo. Leia mais no manual:http://php.net/manual/en/function .readfile.php
Lembre-se de que, embora PDF e imagens sejam facilmente visualizados por um navegador, acho que o Excel precisa de alguns ad hoc plug-in para isso.
Um exemplo mais completo saído do manual , para ter uma ideia mais completa (nem todos esses cabeçalhos são necessários e você deve alterar outros de acordo com seu código):
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;