Excel文件存储在数据库中(以前的二进制数据的十六进制值)。我需要阅读它并使其可供下载。通过PHP标题传输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文件(我可以正常打开)。
我该如何做到这一点?
这是一个非常本地化的问题,但是我认为它可能会与die()之前的空白空间相呼应。 – Farkie
为什么你使用死亡?死像退出,应该是一个错误代码或什么的。为什么不重复$ out;出口(); – steven
好吧,实际上两个版本都没有显示出差异。 – user2432939