2010-04-08 18 views
8

Al buscar en Google encontré dos conjuntos diferentes de encabezados que deben establecerse al generar Excel generado en diferentes formatos de archivo.PHPExcel establece encabezados específicos para el formato de archivo

por ej.

Para Tipo "Excel5" cabeceras son:

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download");; 
header("Content-Disposition: attachment;filename=$filename"); 
header("Content-Transfer-Encoding: binary "); 

Para Tipo "Excel2007" cabeceras son:

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

Mi pregunta: ¿Hay necesidad de establecer diferentes cabeceras de cada tipo de archivo ya que hay otros tipos de archivos también CSV, HTML y PDF?

Respuesta

12
header("Pragma: public"); 

No - Esto está mal - aunque mucha gente piensa que tiene algo que ver con el caché

header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

nada que ver con Excel - estos sólo controlan el almacenamiento en caché

header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download");; 

No, debe haber solo sea un encabezado de tipo de contenido. Para un archivo de MS Excel que use OLE, el tipo de mimet debe ser application/vnd.ms-excel

Solo el segundo encabezado anterior es un tipo de mime válido.

header("Content-Disposition: attachment;filename=$filename"); 
header("Content-Transfer-Encoding: binary "); 

El segundo encabezado es redundante, el primero especifica un nombre de archivo para la descarga.

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ');

Solo para un archivo .xlsx (es decir, guardado en XML). De lo contrario, debe usar application/vnd.ms-excel. De hecho, este último debería ser compatible con versiones anteriores.

Mi pregunta: ¿hay necesidad de configurar diferentes encabezados para cada tipo de archivo

Sí - la cabecera Content-Type es el tipo de archivo. Pero solo este encabezado debe cambiar.

C.

Cuestiones relacionadas