0

我已经搜索了几个小时,并仔细阅读了几十页试图找到答案。

我正在使用 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 预览版,如果这有帮助的话......

4

1 回答 1

0

不知道你是否还有这个问题,毕竟你问它已经两年了,但我刚刚遇到了这个问题,并找到了解决方案:

您需要更改 Excel 中的设置 - 它为我解决了问题。

  1. 打开 Excel。
  2. 单击“文件”,然后单击“选项”。
  3. 选择“信任中心”,然后选择“信任中心设置”。
  4. 选择“受保护的视图”。
  5. 取消选中“受保护的视图”下的选项,然后单击“确定”。
  6. 重新启动 Excel 并尝试打开 Excel 文档。

(原始来源:Microsoft Excel 帮助页面)

于 2015-08-26T06:36:43.440 回答