PHP流将数据优化到浏览器

时间:2012-09-06 12:35:07

标签: php internet-explorer firefox phpexcel

我正在通过PHP Excel生成Excel文档。 用户要求将文件内容直接输出到浏览器。 我写了以下代码(通过谷歌研究后):

$writer = PHPExcel_IOFactory::createWriter($xcel, 'Excel5');

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: applicaton/vnd.ms-excel");
header("Content-type: application/force-download");
header("Content-type: application/octet-stream");
header("Content-type: application/download");;
header("Content-Disposition: attachment;filename=File.xlsx");
header("Expires: 0");
header("Pragma: public");
$writer->save('php://output');

结果如下:

  

ࡱ;   

     

   B = %r8X“1 Calibri         83ffff ̙̙3f3fff 3f3f33333f33333   iD07_12_ACT_N g W&文件于2012年9月6日创建 -   14:19:28   * +放大器;?(?)???FFFFFF“FFFFFF”dXX333333 333333蓝} $    > @gg RootEntry   FSS:SS:工作簿   ˚F

我没有将询问的内容作为excel表输出,而是获得了excel表的编码内容。

任何可以解决此问题的人?

THX

2 个答案:

答案 0 :(得分:3)

如果要生成xls(Excel5)文件,请尝试:

    $writer = PHPExcel_IOFactory::createWriter($xcel, 'Excel5');    
    header('Content-Type: application/vnd.ms-excel');
    header("Content-Disposition: attachment;filename=File.xls");
    header('Cache-Control: max-age=0');
    $writer->save('php://output');

如果你想要一个xlsx(对于excel 2007或更高版本)文件,请试试这个:

    $writer = PHPExcel_IOFactory::createWriter($xcel, 'Excel2007');    
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header("Content-Disposition: attachment;filename=File.xlsx");
    header('Cache-Control: max-age=0');
    $writer->save('php://output');

答案 1 :(得分:0)

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
对于大多数浏览器来说,

应该足够了(IE over SSL是一个例外):/ Tests/01simple-download-xls.php是否有效?

在标题之前,您是否有任何输出到浏览器?