0

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(从数据库中导出)可以正常工作。如果我$out通过 fopen / fwrite 写入文件,它正是原始 Excel 文件(我可以正常打开)。

我怎样才能做到这一点?

4

1 回答 1

1

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

于 2013-05-29T14:58:29.507 回答