2013-05-29 20 views
0

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文件(我可以正常打开)。

我该如何做到这一点?

+0

这是一个非常本地化的问题,但是我认为它可能会与die()之前的空白空间相呼应。 – Farkie

+1

为什么你使用死亡?死像退出,应该是一个错误代码或什么的。为什么不重复$ out;出口(); – steven

+1

好吧,实际上两个版本都没有显示出差异。 – user2432939

回答

1

确保您在打开<?php标记之前或在关闭?>之后没有此额外制表符。实际上,出于这个原因,完全省略结束标记是一种很好的做法。

+0

仍然一样 - 但奇怪的是:出口pdf是没有问题的。 – user2432939