从数据库转储数据到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一些东西。