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";
}
}
}
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";
}
}
}
相关文章推荐
- php中使用python生成excel报表
- php生成excel报表
- PHPExcel 生成excel表
- php生成EXCEL的东东
- .net关于企业Excel报表的生成 (转贴 作者yangyifan)
- C#.NET自动生成Excel图形报表
- 基于PHPexecl类生成复杂的报表表头示例
- 使用Aspose.Cell控件实现Excel高难度报表的生成(三)
- .Net关于企业Excel报表的生成
- PHP例子:生成EXCEL数据
- 图文并茂(Excel生成有图片的报表)
- PHP 生成excel 时 单元格内换行的问题
- PHP写的开源报表生成工具Reportico
- 用php生成excel文件
- PHP EXcel 常用函数 ,其中包括图片的生成
- php导出报表为excel
- Asp.net程序中生成Excel报表(转)
- PHPExcel:用于Excel等文档生成的PHP开源类库
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- .net关于企业Excel报表的生成