PHPExcel set specific headers for file format

Hi,

While googling I found two different sets of headers that need to be set when outputting excel generated in different file format.

for e.g.

For Type "Excel5" headers are:

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

For Type "Excel2007" headers are:

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

My question: is there need to set up different headers for each file type as there are other file types also CSV, HTML  and PDF?
teenashahAsked:
Who is Participating?
 
huchimConnect With a Mentor Commented:
Yes...

You can try with this function

header( 'Content-Type: ' .  getmimefile( 'workbook.xlsx' ) );


/**
 * Get MIME Type or MIME description of a file using the extension name
 * 
 * @param string $file File name, file.bmp
 * @param bool $retdesc Return Only MIME Description (true) or MIME Type (false)
 * @return string
 */
function getmimefile($file,$retdesc = false)
{
 $known_mime_desc=array("avi" => "Video AVI",
     "css" => "Hoja de estilos",
     "doc" => "Documento de Microsoft Word",
     "gif" => "Imagen (GIF)",
     "gz" => "Carpeta comprimida GZ",
     "htm" => "Pagina Web HTM",
     "html" => "Pagina Web HTML",
     "ico" => "Icono",
     "jpe" => "Imagen JPE",
     "jpeg" => "Imagen JPEG",
     "jpg" => "Imagen JPG",
     "js" => "Documento Javascript",
     "mov" => "Video QuickTime",
     "mp3" => "Musica (MP3)",
     "mpeg" => "Video (MPEG)",
     "mpg" => "Video (MPEG)",
     "pdf" => "Documento de Adobe Acrobat (PDF)",
     "pps" => "Presentacion PowerPoint",
     "ppt" => "Presentacion editable PowerPoint",
     "tgz" => "Carpeta comprimida TGZ",
     "tif" => "Imagen TIFF",
     "tiff" => "Imagen TIFF",
     "txt" => "Archivo de texto",
     "rar" => "Carpeta comprimida RAR",
     "wav" => "Musica WAV",
     "z" => "Carpeta comprimida Z",
     "dwg" => "Plano en Autocad",
     "dxf" => "Plano exportado Autocad",
     "zip" => "Carpeta comprimida ZIP");
/* Figure out the MIME type (if not specified) */
 $known_mime_types=array("323" => "text/h323",
     "acx" => "application/internet-property-stream",
     "ai" => "application/postscript",
     "aif" => "audio/x-aiff",
     "aifc" => "audio/x-aiff",
     "aiff" => "audio/x-aiff",
     "asf" => "video/x-ms-asf",
     "asr" => "video/x-ms-asf",
     "asx" => "video/x-ms-asf",
     "au" => "audio/basic",
     "avi" => "video/x-msvideo",
     "axs" => "application/olescript",
     "bas" => "text/plain",
     "bcpio" => "application/x-bcpio",
     "bin" => "application/octet-stream",
     "bmp" => "image/bmp",
     "c" => "text/plain",
     "cat" => "application/vnd.ms-pkiseccat",
     "cdf" => "application/x-cdf",
     "cer" => "application/x-x509-ca-cert",
     "class" => "application/octet-stream",
     "clp" => "application/x-msclip",
     "cmx" => "image/x-cmx",
     "cod" => "image/cis-cod",
     "cpio" => "application/x-cpio",
     "crd" => "application/x-mscardfile",
     "crl" => "application/pkix-crl",
     "crt" => "application/x-x509-ca-cert",
     "csh" => "application/x-csh",
     "css" => "text/css",
     "dcr" => "application/x-director",
     "der" => "application/x-x509-ca-cert",
     "dir" => "application/x-director",
     "dll" => "application/x-msdownload",
     "dms" => "application/octet-stream",
     "doc" => "application/msword",
     "dot" => "application/msword",
     "dvi" => "application/x-dvi",
     "dxr" => "application/x-director",
     "eps" => "application/postscript",
     "etx" => "text/x-setext",
     "evy" => "application/envoy",
     "exe" => "application/octet-stream",
     "fif" => "application/fractals",
     "flr" => "x-world/x-vrml",
     "gif" => "image/gif",
     "gtar" => "application/x-gtar",
     "gz" => "application/x-gzip",
     "h" => "text/plain",
     "hdf" => "application/x-hdf",
     "hlp" => "application/winhlp",
     "hqx" => "application/mac-binhex40",
     "hta" => "application/hta",
     "htc" => "text/x-component",
     "htm" => "text/html",
     "html" => "text/html",
     "htt" => "text/webviewhtml",
     "ico" => "image/x-icon",
     "ief" => "image/ief",
     "iii" => "application/x-iphone",
     "ins" => "application/x-internet-signup",
     "isp" => "application/x-internet-signup",
     "jfif" => "image/pipeg",
     "jpe" => "image/jpeg",
     "jpeg" => "image/jpeg",
     "jpg" => "image/jpeg",
     "js" => "application/x-javascript",
     "latex" => "application/x-latex",
     "lha" => "application/octet-stream",
     "lsf" => "video/x-la-asf",
     "lsx" => "video/x-la-asf",
     "lzh" => "application/octet-stream",
     "m13" => "application/x-msmediaview",
     "m14" => "application/x-msmediaview",
     "m3u" => "audio/x-mpegurl",
     "man" => "application/x-troff-man",
     "mdb" => "application/x-msaccess",
     "me" => "application/x-troff-me",
     "mht" => "message/rfc822",
     "mhtml" => "message/rfc822",
     "mid" => "audio/mid",
     "mny" => "application/x-msmoney",
     "mov" => "video/quicktime",
     "movie" => "video/x-sgi-movie",
     "mp2" => "video/mpeg",
     "mp3" => "audio/mpeg",
     "mpa" => "video/mpeg",
     "mpe" => "video/mpeg",
     "mpeg" => "video/mpeg",
     "mpg" => "video/mpeg",
     "mpp" => "application/vnd.ms-project",
     "mpv2" => "video/mpeg",
     "ms" => "application/x-troff-ms",
     "mvb" => "application/x-msmediaview",
     "nws" => "message/rfc822",
     "oda" => "application/oda",
     "p10" => "application/pkcs10",
     "p12" => "application/x-pkcs12",
     "p7b" => "application/x-pkcs7-certificates",
     "p7c" => "application/x-pkcs7-mime",
     "p7m" => "application/x-pkcs7-mime",
     "p7r" => "application/x-pkcs7-certreqresp",
     "p7s" => "application/x-pkcs7-signature",
     "pbm" => "image/x-portable-bitmap",
     "pdf" => "application/pdf",
     "pfx" => "application/x-pkcs12",
     "pgm" => "image/x-portable-graymap",
     "pko" => "application/ynd.ms-pkipko",
     "pma" => "application/x-perfmon",
     "pmc" => "application/x-perfmon",
     "pml" => "application/x-perfmon",
     "pmr" => "application/x-perfmon",
     "pmw" => "application/x-perfmon",
     "pnm" => "image/x-portable-anymap",
     "pot" => "application/vnd.ms-powerpoint",
     "ppm" => "image/x-portable-pixmap",
     "pps" => "application/vnd.ms-powerpoint",
     "ppt" => "application/vnd.ms-powerpoint",
     "prf" => "application/pics-rules",
     "ps" => "application/postscript",
     "pub" => "application/x-mspublisher",
     "qt" => "video/quicktime",
     "ra" => "audio/x-pn-realaudio",
     "ram" => "audio/x-pn-realaudio",
     "ras" => "image/x-cmu-raster",
     "rgb" => "image/x-rgb",
     "rmi" => "audio/mid",
     "roff" => "application/x-troff",
     "rtf" => "application/rtf",
     "rtx" => "text/richtext",
     "scd" => "application/x-msschedule",
     "sct" => "text/scriptlet",
     "setpay" => "application/set-payment-initiation",
     "setreg" => "application/set-registration-initiation",
     "sh" => "application/x-sh",
     "shar" => "application/x-shar",
     "sit" => "application/x-stuffit",
     "snd" => "audio/basic",
     "spc" => "application/x-pkcs7-certificates",
     "spl" => "application/futuresplash",
     "src" => "application/x-wais-source",
     "sst" => "application/vnd.ms-pkicertstore",
     "stl" => "application/vnd.ms-pkistl",
     "stm" => "text/html",
     "svg" => "image/svg+xml",
     "sv4cpio" => "application/x-sv4cpio",
     "sv4crc" => "application/x-sv4crc",
     "t" => "application/x-troff",
     "tar" => "application/x-tar",
     "tcl" => "application/x-tcl",
     "tex" => "application/x-tex",
     "texi" => "application/x-texinfo",
     "texinfo" => "application/x-texinfo",
     "tgz" => "application/x-compressed",
     "tif" => "image/tiff",
     "tiff" => "image/tiff",
     "tr" => "application/x-troff",
     "trm" => "application/x-msterminal",
     "tsv" => "text/tab-separated-values",
     "txt" => "text/plain",
     "uls" => "text/iuls",
     "ustar" => "application/x-ustar",
     "vcf" => "text/x-vcard",
     "vrml" => "x-world/x-vrml",
     "wav" => "audio/x-wav",
     "wcm" => "application/vnd.ms-works",
     "wdb" => "application/vnd.ms-works",
     "wks" => "application/vnd.ms-works",
     "wmf" => "application/x-msmetafile",
     "wps" => "application/vnd.ms-works",
     "wri" => "application/x-mswrite",
     "wrl" => "x-world/x-vrml",
     "wrz" => "x-world/x-vrml",
     "xaf" => "x-world/x-vrml",
     "xbm" => "image/x-xbitmap",
     "xla" => "application/vnd.ms-excel",
     "xlc" => "application/vnd.ms-excel",
     "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
     "xlm" => "application/vnd.ms-excel",
     "xls" => "application/vnd.ms-excel",
     "xlt" => "application/vnd.ms-excel",
     "xlw" => "application/vnd.ms-excel",
     "xof" => "x-world/x-vrml",
     "xpm" => "image/x-xpixmap",
     "xwd" => "image/x-xwindowdump",
     "z" => "application/x-compress",
     "zip" => "application/zip");
     
      $file_extension = strtolower(substr(strrchr($file,"."),1));
     
      if(array_key_exists($file_extension, $known_mime_types)){
        if (!$retdesc)
        {
            $mime_type=$known_mime_types[$file_extension];
        }
        else
        {
            $mime_type=$known_mime_desc[$file_extension];
        }
     } else {
         if (!$retdesc)
        {
            $mime_type="application/force-download";
        }
        else
        {
            $mime_type="Archivo " . strtoupper($file_extension);
        }
     };

     return $mime_type;
}

Open in new window

0
 
racmail2001Commented:
for excel i use the following

where $export is the variable with all the data

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: inline; filename=export.xls");
header("Content-Description: PHP5 Generated Data" );
header("Content-Length: ".strlen($export));
print $export;


for the csv you only need to change the extension of the filename and you are good to go

for pdf i think that you shoul use a pdf class as this http://www.fpdf.org/

for html i do not understand what you need because the page rendered in your browser it is html
you need a dounloadable version of the page?

hope this helps
0
 
racmail2001Commented:
the point here i think it's not only to set the headers, but olso to create te content for that specific extension.

if you use that function and set the extension for pdf do you think that the file that will open with acrobat reader wil be rendered corectly?

my point is that for specific extensions the content should be prepared diferently.

hope this helps
0
 
teenashahAuthor Commented:
Helpful code spec
0
All Courses

From novice to tech pro — start learning today.