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?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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
huchimCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.