php轻松导出excel

作者: 坎肩儿 分类: php代码 发布时间: 2011-08-09 18:56

实际应用中,php导出excel是很常见的。

代码如下:

<?php
header(“Cache-Control: no-cache, must-revalidate”);
header(“Pragma: no-cache”);
header(‘Content-type: application/x-msexcel’);
header(“Content-Disposition: attachment; filename=gbook.xls” );
header(“Content-Description: PHP/INTERBASE Generated Data” );

xlsBOF(); // begin Excel stream
xlsWriteLabel(0,0,”留言标题”);//write a Label A1
xlsWriteLabel(0,1,”留言人”);
xlsWriteLabel(0,2,”手机”);
xlsWriteLabel(0,3,”邮箱”);
xlsWriteLabel(0,4,”QQ”);
xlsWriteLabel(0,5,”留言时间”);
xlsWriteLabel(0,6,”留言内容”);
xlsWriteLabel(0,7,”回复内容”);
//
$sql = “select * from hd_info order by add_time asc”;
$rst = $folie->excu($sql);
$i = 1;
while($info = mysql_fetch_array($rst)){
xlsWriteLabel($i,0,$info[“title”]);
xlsWriteLabel($i,1,$info[“add_user”]);
xlsWriteLabel($i,2,$info[“tel”]);
xlsWriteLabel($i,3,$info[“email”]);
xlsWriteLabel($i,4,$info[“qq”]);
xlsWriteLabel($i,5,date(“Y-m-d”,$info[“add_time”]));
xlsWriteLabel($i,6,$info[“cont”]);
xlsWriteLabel($i,7,$info[“reply_cont”]);

$i++;
}
//xlsWriteNumber(0,1,9999); // write a number B1
xlsEOF(); // close the stream

// —– begin of function library —–
// Excel begin of file header
function xlsBOF() {
echo pack(“ssssss”, 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
// Excel end of file footer
function xlsEOF() {
echo pack(“ss”, 0x0A, 0x00);
return;
}
// Function to write a Number (double) into Row, Col
function xlsWriteNumber($Row, $Col, $Value) {
echo pack(“sssss”, 0x203, 14, $Row, $Col, 0x0);
echo pack(“d”, $Value);
return;
}
// Function to write a label (text) into Row, Col
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack(“ssssss”, 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
?>

连接MYSQL的语句,根据不同的网站自己写上吧,核心代码就是上面的了。

PS:2018年6月27日,进一步完善

数据库编码:utf8,直接导出Excel后乱码,解决如下:

xlsWriteLabel(0,0,iconv( “utf-8″, “gb2312″, “姓名”))

成功解决乱码问题。

一条评论
  • 岁月无痕

    8月 10, 2011 2:32 下午

    文章还好,又学习了。谢谢。。