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