php导出数据为excel表格

在第一个php文件中写一个函数(如:toExcel),吧mysql数据查询出来,为函数exportexcel准备数据,然后调用该函数;

在视图模板中通过url方式,访问第一个php文件中的toExcel函数,自动提示下载;

文件名可自定义,excel表头根据数据列 来自定义;


第一个php文件(用的是onethink程序,语法结构是thinkphp框架):

public function toExcel(){
		 	require_once('excel.php');			
			$mes = M("Message");
			$data = $mes->where('status=1')->order('create_time desc')->select();	
			for($i=0;$i<sizeof($data);$i++){
				$data[$i]['create_time']=date("Y-m-d H:i:s",$data[$i]['create_time']);;
				$data[$i]['zongjia']=substr($data[$i]['zongjia'],2)."元";
			}
			
			$title = array("序号","订单名称","订单备注","姓名","总价","数量","联系电话","地址","sort","type","状态","下单时间","reply_info");
			exportexcel($data,$title,"莱昂".date("Y-m-d H:i:s"));
			
	}

第二个php文件(excel.php):

/**
    * 导出数据为excel表格
    *@param $data    一个二维数组,结构如同从数据库查出来的数组
    *@param $title   excel的第一行标题,一个数组,如果为空则没有标题
    *@param $filename 下载的文件名
    *@examlpe 
    $stu = M ('User');
    $arr = $stu -> select();
    exportexcel($arr,array('id','账户','密码','昵称'),'文件名!');
*/
 function exportexcel($data=array(),$title=array(),$filename='report'){
    header("Content-type:application/octet-stream");
    header("Accept-Ranges:bytes");
    header("Content-type:application/vnd.ms-excel");  
    header("Content-Disposition:attachment;filename=".$filename.".xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    //导出xls 开始
    if (!empty($title)){
        foreach ($title as $k => $v) {
            $title[$k]=iconv("UTF-8", "GB2312",$v);
        }
        $title= implode("\t", $title);
        echo "$title\n";
    }
    if (!empty($data)){
        foreach($data as $key=>$val){
            foreach ($val as $ck => $cv) {
                $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
            }
            $data[$key]=implode("\t", $data[$key]);
            
        }
        echo implode("\n",$data);
    }
 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值