2012-03-24 75 views
11
header("Content-Type: application/vnd.ms-excel; charset=utf-8"); 
header("Content-type: application/x-msexcel; charset=utf-8"); 
header("Content-Disposition: attachment; filename=abc.xsl"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
echo "Some Text" 

Aquí es código para escribir y el archivo XSL descarga utilizando php,
mi problema es cuando abro archivo de Excel MS-Excel advertencia serie antes de abrir el archivo dicePHP Excel

el archivo que está tratando de abrir está en un formato diferente al especificado por la extensión de archivo ... Blah blah

¿Qué hacer con el código PHP para eliminar esta advertencia? Los contenidos están escritos correctamente.

Sé que esto se debe a que el contenido escrito en el archivo es el contenido del archivo txt y la extensión del archivo es incorrecta, es decir, xls. ¿Solución?

No recomendamos utilizar ninguna biblioteca.

+0

'Solution ???' um - use la extensión correcta, '.txt'? No estoy seguro de lo que estás preguntando aquí. –

+3

Pero "Some Text" no sería un contenido válido para un archivo de Excel en absoluto ... y Excel le dará este mensaje si usted dice porky pies y trata de pretender que un archivo de texto es un archivo xls ... Si lo desea para evitar esto, no nos diga "No hay bibliotecas". Use una biblioteca o escriba todo usted mismo ... la biblioteca que escribí llevó más de 6 años hasta el momento –

+3

El solo hecho de enviar el tipo MIME para archivos de Excel no convierte mágicamente la salida HTML o CSV en un archivo Excel real. No hay solución para la pereza. – mario

Respuesta

7

probar este

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
header("Content-Disposition: attachment;filename=\"filename.xlsx\""); 
header("Cache-Control: max-age=0"); 
28

Usted está dando múltiples Content-Type cabeceras. application/vnd.ms-excel es suficiente.

Y también hay un par de errores de sintaxis. Para la terminación de la declaración con ; en la declaración de eco y la extensión incorrecta del nombre de archivo.

header("Content-Type: application/vnd.ms-excel; charset=utf-8"); 
header("Content-Disposition: attachment; filename=abc.xls"); //File name extension was wrong 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
echo "Some Text"; //no ending ; here 
+2

Sin mencionar la extensión para el nombre de archivo en Content Disposition –

+0

@MarkBaker, Sí, me olvidé de eso – Starx

+0

He copiado y pegado en un nuevo archivo php y he comprobado que mi archivo xls descargado da el mismo mensaje de error, ¿Hay algo más que hacer para solucionar esto? –

0

Intente agregar exit; al final de su script PHP.