2010-04-08 12 views
8

Beim googlen habe ich zwei verschiedene Sätze von Headern gefunden, die gesetzt werden müssen, wenn Excel in verschiedenen Dateiformaten ausgegeben wird.PHPExcel Set spezifische Header für das Dateiformat

für z.B.

Für Typ "Excel5" Header sind:

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 "); 

Für Typ "Excel2007" Header sind:

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

Meine Frage: Gibt es müssen unterschiedliche Kopf- einzurichten für jeder Dateityp, da es auch andere Dateitypen gibt CSV, HTML und PDF?

Antwort

12
header("Pragma: public"); 

Nein - das ist einfach falsch - obwohl viele Leute denken, dass es etwas mit Caching

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

Nichts zu tun mit Excel zu tun hat - diese nur Caching steuern

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

Nein - dort sollte nur ein Content-Type-Header sein. Für eine MS Excel-Datei, die OLE verwendet, sollte der MIME-Typ application/vnd.ms-excel

Nur der zweite Header oben ist ein gültiger Mime-Typ.

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

Der zweite Header ist redundant, der erste gibt einen Dateinamen für den Download an.

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

Nur für eine .xlsx-Datei (d. H. In XML gespeichert). Andernfalls sollten Sie application/vnd.ms-excel verwenden. In der Tat sollte Letzteres rückwärtskompatibel sein.

Meine Frage: ist es müssen unterschiedliche Header für jeden Dateityp

Ja einzurichten - der Content-Type-Header ist der Dateityp. Aber nur dieser Header muss sich ändern.

C.