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 :(得分:1)
确保在开始<?php
标记之前或结束标记?>
之后没有此额外标签字符。实际上,最好完全省略结束标记。