PHP导出excel表格(可多表)SQL

function active($xlsName='', $xlsCell=array(), $xlsModel=''){  
	    // 合计人数
	    // $fileName = "国庆活动";
	    // $headArr = array('ID', '姓名','电话','所属班级','成功人数','确认签字');
	    // $grade = M('active_friend');
		// $join = "".C('DB_PREFIX').'active_friends as b on b.f_id =a.id';
		// $data =$grade->alias('a')->field("a.id,a.name,a.phone,a.class,count(b.f_id)")
        //->join($join)->where(array("b.status"=>1))
        //->DISTINCT(a.name)->group("b.f_id")->select();

	    // $this->getExcel($fileName, $headArr, $data);
	
	 // 合计人数
	   $fileName = "国庆活动";
	   $headArr = array( '姓名','性别','年龄','手机号','学历','推荐人','推荐人电话');
	   $grade = M('active_friends');
	   $join = "".C('DB_PREFIX').'active_friend as b on a.f_id =b.id';
	   $data =$grade->alias('a')
       ->field("a.name,a.sex,a.age,a.phone,a.edu,b.name as t_name,b.phone as t_phone")
       ->join($join)->select();

	   $this->getExcel($fileName, $headArr, $data);
	
	}

 

	
	private function getExcel($fileName, $headArr, $data){
	 	//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
            vendor('PHPExcel.PHPExcel');
            $date = date("Y_m_d", time());
            $fileName .= "_{$date}.xls";
 
        //创建PHPExcel对象,注意,不能少了\
            $objPHPExcel = new \PHPExcel();
            $objProps = $objPHPExcel->getProperties();
	
        //设置表头
            $key = 0;
        //print_r($headArr);exit;
            foreach ($headArr as $v) {
        //将字母命名改为数字命名,
          $colum = \PHPExcel_Cell::stringFromColumnIndex($key);
          $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
          $key += 1;
    }
    
            $column = 2;
            $objActSheet = $objPHPExcel->getActiveSheet();
 
    //print_r($data);exit;
        foreach ($data as $key => $rows) { //行写入
        $span = 0;
        foreach ($rows as $keyName => $value) {// 列写入
        //将字母命名改为数字命名,
            $j = \PHPExcel_Cell::stringFromColumnIndex($span);
            $objActSheet->setCellValue($j . $column, $value);
            $span++;
        }
        $column++;
    }
 
    $fileName = iconv("utf-8", "gb2312", $fileName);
 
    //重命名表
    //$objPHPExcel->getActiveSheet()->setTitle('wx');
    //设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objPHPExcel->setActiveSheetIndex(0);
        ob_end_clean(); //清除缓冲区,避免乱码
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=\"$fileName\"");
        header('Cache-Control: max-age=0');
 
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); //文件通过浏览器下载
            exit;
	}

 

你可能感兴趣的:(Thinkphp,PHP进阶)