从数据库转储数据到Excel文件使用PHP 4.3.9

我最近使用下面的代码作为一个Excel文件导出我的数据在数据库中。 但是输出显示为具有来自数据库的正确数据的html页面。

<?php /* database connection here */ $file_type = "vnd.ms-excel"; $file_ending = "xls"; header("Content-Type: application/$file_type"); header("Content-Disposition: attachment; filename=$table.$file_ending"); header("Pragma: no-cache"); header("Expires: 0"); /* extract from database */ 

它从数据库中提取所有的数据,所以我假设数据库function是正确的,但它只是不保存为Excel文件。 这个代码我在以前的项目中使用完全相同,工作正常。 任何想法如何解决这个问题? PLZ的帮助。

我的build议是检查生成的 HTTP头,并确保它们是正确的。 您可以使用Firebug的“Net”面板或您select的工具。

无论如何,这部分描述build议您不生成Excel文件:

输出显示为具有来自数据库的正确数据的html页面

Excel文件是二进制文件。 如果在浏览器中显示,他们将看起来像垃圾。 我怀疑你是在告诉浏览器“这是一个Excel电子表格”,然后发送HTML。


顺便说一句, Expires头部看起来不正确。 它应该包含一个date而不是整数的string:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21

正如规范所说,浏览器必须像in the past一样处理0 ,但它不是一个正确的值。

最后才发现这是我遇到的同样的问题。 只需在编辑器中将UTF-8设置为UTF-8而无需BOM即可解决它….代码似乎是正确的,但这里是我现在使用的更好的标题内容。 谢谢你们的帮助。 ;)

  header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=".$filename.".xls"); header("Content-Transfer-Encoding: binary "); 

你可以使用这个类让你从PHP创buildexcel文件

用于读取/写入Excel文件的PHP类

另一个

我推荐第一个。

在这个问题的答案中有一个用于读取/写入Excel文件的PHP库列表。 我不知道他们中有多less人会使用PHP4(当然大多数需要PHP5),但是你可能会在这里find一些东西。