您的位置:首页 > 编程语言 > PHP开发

php生成excel报表

2012-11-12 19:13 148 查看
把数据库中的内容读出来,显示到exl表中,php生成excel报表

1.header() 函数用来发送一个原始 HTTP 标头

header ( string string [, bool replace [, int http_response_code]] )

可选参数 replace 指明是替换掉前一条类似的标头还是增加一条相同类型的标头。默认为替换,但如果将其设为 FALSE 则可以强制发送多个同类标头。例如:

<?php

header('WWW-Authenticate: Negotiate');

header('WWW-Authenticate: NTLM', false);

?>

第二个可选参数 http_response_code 强制将 HTTP 响应代码设为指定值

2.有两种特殊的 header 调用。第一种是标头以字符串"HTTP/"(大小写不重要)开头的,可以用来确定要发送的 HTTP 状态码。例如,如果配置了 Apache 用 PHP 来处理找不到文件的错误处理请求

HTTP 状态码标头行总是第一个被发送到客户端,而并不管实际的 header() 调用是否是第一个。除非 HTTP 标头已经发送出去,任何时候都可以通过用新的状态行调用 header() 函数来覆盖原先的。

第二种特殊情况是以"Location:"标头。它不只是把这个标头发送回浏览器,它还将一个 REDIRECT(302)状态码返回给浏览器,除非之前已经发出了某个 3xx 状态码。

要记住 header() 必须在任何实际输出之前调用,不论是来自普通的 HTML 标记,空行或者 PHP。有一个常见错误就是在通过 include(),require() 或一些其它的文件存取类函数读取代码时,有一些空格或者空行在调用 header() 之前被发送了出去。同样在一个单独的 PHP/HTML 文件中这个错误也很普遍。

自 PHP 4 起,可以通过一些输出缓冲函数来解决这个问题。代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及 ob_end_flush() 来实现这样的功能,或者通过修改 php.ini 中的 output_buffering 配置选项来实现,也可以通过修改服务器配置文件来实现。

3.如果想提示用户保存所发送的数据,例如一个生成的 PDF 文件,可以通过发送 Content-Disposition 标头提供推荐的文件名来强制浏览器弹出一个保存文件对话框。

<?php

header("Content-Type:text/html;charset=gb2312");

//php生成excel报表,是通过发送header()头信息完成的

header("Content-Type:application/vnd.ms-excel");

//告知浏览器文件名称,并要求客户端下载

header("Content-Disposition:attachment;filename=test.xls");

mysql_connect('localhost','root','123');

mysql_select_db('lyb');

$sql="select * from user";

$res=mysql_query($sql);

//获得行数

$arr_rows=mysql_num_rows($res);

//获得列数

$arr_cols=mysql_num_fields($res);

while($row=mysql_fetch_array($res)){

for($i=0;$i<$arr_cols;$i++){

if($i==$arr_cols-1){

echo $row[$i]."\n";

}

else{

echo $row[$i]."\t";

}

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: