我已经搜索了几个小时,并仔细阅读了几十页试图找到答案。
我正在使用 PHPexcel 生成一个电子表格,并将其作为 excel 2007 .xlsx 文件保存在我的服务器上。如果我直接从服务器下载 .xlsx 文件并在我的计算机上打开它,它可以正常打开。没问题。
如果我使用 php 脚本下载文件(通过readfile()
),ms excel 会给我一条“此文件已损坏...”消息。
好的,我已经对这两个文件进行了十六进制文件比较,但是没有明显的区别!
这发生在我的 ubuntu 服务器(运行 php 5.3.2)以及 wampserver(运行 PHP 5.3.13 的 Windows 8、64 位环境)上。
我已经检查了所有内容,以确保在 readfile(); 之前没有发送 \t 或 \n 或任何其他输出;
我使用了 ob_start 和 ob_end_clean() 来确保没有输出被发送。
我没有使用带有错误 php_zip.dll 二进制文件的 PHP v 5.2.8。
得到这个!, 这太疯狂了。
我什至使用 MS excel 程序创建了一个 excel 文件。文件没有问题。我直接将它上传到我的服务器,然后通过链接直接访问它。它会下载,当我尝试打开它时,我会收到“文件已损坏且无法打开”的消息。
如果您想尝试,这里是直接链接:http: //db.doanddare.org/Lyv6r_y7echVnAcUG4fGUw/testing.xlsx
是的,它是我刚刚在 excel 中创建并上传的测试文件的直接链接。这里不涉及 php 处理或标头。
Stack Overflow 是我最后的选择!谢谢你的帮助。
哦,我正在使用 excel 2013 预览版,如果这有帮助的话......