通过PHP标头传输Excel()

时间:2013-05-29 14:51:00

标签: php excel header

Excel文件存储在数据库中(以前的二进制数据的十六进制值)。我需要阅读它并将其下载。

这是代码......

$out = hex2bin($out); // the stuff from the database


header("Content-Type:   application/vnd.ms-excel");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename='$filename'");  
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
die($out);

实际上我收到的东西......它看起来像原始文件略有不同。 使用十六进制编辑器时,它显示

    ÐÏࡱá

而不是

ÐÏࡱá

(看起来像一个额外的标签)。因此,Excel无法显示工作表,而是显示原始数据。

这不是$out中的数据;转换bin2hex(在数据库中导入期间)和hex2bin(从数据库导出)工作没有问题。如果我通过fopen / fwrite将$out写入文件,那么它就是原始的Excel文件(我可以正常打开)。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

确保在开始<?php标记之前或结束标记?>之后没有此额外标签字符。实际上,最好完全省略结束标记。