header導出Excel你做過嗎?

片段實用代碼

   $filename = './Reportable/system/Excel/'.mb_substr($_GET['dirName'],0,7).".xlsx";   
header('Content-Disposition: attachment; filename='.mb_substr($_GET['dirName'],0,7).'.xlsx');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($filename));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile($filename);

實例:


<?php

class reportFormAction extends CommonAction{
    
    
    public function index(){
                if($_POST){
                    //@param $data array 需要導出的數據
                    //@param $field string 導出csv文件的列名
                    //@param $filename string 需要導出csv文件的名字
                    $where = '1';
                    $order = 'creative_id desc';
                    if($_POST['crea_wh'] == 1) $order .= "";
                    if($_POST['crea_wh'] == 2) $order .= "creative_time desc";
                    $star = strtotime($_POST['control_star']);
                    $end = strtotime($_POST['control_end']);
                    if($star && $end) $where .= " and (create_time between $star and $end)";
                    if($_POST['creative_type'] == 1) $where .= " and creative_type =1";
                    if($_POST['creative_type'] == 2) $where .= " and creative_type =2";
                    if($_POST['creative_type'] == 3) $where .= " and creative_type =3";
                    if($_POST['sort_name'] == 1) $where .= " and sort_name = '技術類'";
                    if($_POST['sort_name'] == 2) $where .= " and sort_name = '包裝類'";
                    if($_POST['sort_name'] == 3) $where .= " and sort_name = '產品類'";
                    if($_POST['sort_name'] == 4) $where .= " and sort_name = '營銷類'";
                    if($_POST['sort_name'] == 5) $where .= " and sort_name = '其他類'";
                    if($_POST['two_status']==0)  {$where .= " and two_status=0"; $fenlei1="一句話創意";}
                    if($_POST['two_status']==1)  {$where .= " and two_status=1"; $fenlei2="標準創意";}
                    $csv = '';
                    $lists = M('creative')->where($where)->order($order)->select();
                    if(is_array($lists) && count($lists)>0){


                            if(empty($filename)) {
                                    $filename = date('Y-m-d',time()).'.csv';
                            }
                            header('Content-type:application/vnd.ms-excel');
                            header('Content-Disposition:attachment;filename='.$filename);
                            header('Pragma:no-cache');
                            header('Expires:0');
                            if($_POST['two_status']==0){
                               $csv= '分類,創意ID,創意類型,創意標籤,創意標題,創意描述,評論數, 收藏數,投票數,提交人,作者'."\n";
                            }elseif($_POST['two_status']==1){
                               $csv= '分類,創意ID,創意類型,創意標籤,創意標題,創意描述,評論數, 收藏數,投票數,提交人,作者,合作者,核心創新點說明,市場計劃,已有類似商業化案例,相關專利狀況,實現方式討論,發表時間'."\n";
                            }else{
                               $csv= '分類,創意ID,創意類型,創意標籤,創意標題,創意描述,評論數, 收藏數,投票數,提交人,作者,合作者,核心創新點說明,市場計劃,已有類似商業化案例,相關專利狀況,實現方式討論,發表時間'."\n";
                            }
                            foreach($lists as $list =>$v) {
                                if($v['creative_type'] == 1){
                                    $type = '問題';
                                }elseif($v['creative_type'] == 2){
                                    $type = '解決方式';
                                }elseif($v['creative_type'] == 3){
                                    $type = '新創意';
                                }
                                if($v['two_status']==0) $fenlei="一句話創意";
                                if($v['two_status']==1) $fenlei="標準創意";
                                if($_POST['two_status']==0){  //一句話
                                    $csv .= $fenlei1.','.$v['creative_id'].",".$v['sort_name'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['comment_num'].','.$v['collect_num'].','.$v['vote_num'].','.$v['submitter'].','.$v['author']."\n";
                                }elseif($_POST['two_status']==1){  //標準
                                    $csv .= $fenlei2.','.$v['creative_id'].",".$v['sort_name'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['comment_num'].','.$v['collect_num'].','.$v['vote_num'].','.$v['submitter'].','.$v['author'].','.$v['collaborator'].','.$v['innovation_description'].','.$v['marketing_plan'].','.$v['business_case'].','.$v['patent_situation'].','.$v['discuss_ways'].','.strtotime($v['create_time'])."\n";
                                }else{                  //全部
                                    $csv .= $fenlei.','.$v['creative_id'].",".$v['sort_name'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['comment_num'].','.$v['collect_num'].','.$v['vote_num'].','.$v['submitter'].','.$v['author'].','.$v['collaborator'].','.$v['innovation_description'].','.$v['marketing_plan'].','.$v['business_case'].','.$v['patent_situation'].','.$v['discuss_ways'].','.strtotime($v['create_time'])."\n";
                                }
                            }
                            echo mb_convert_encoding($csv,"CP936","UTF-8");
                            
                    }else{
                        $this->assign("msg",$msg);
                    }
                    exit;
                }
                


        
        $this->display();
    }
    
    
    public function votecount(){
        if($_POST){
                    //@param $data array 需要導出的數據
                    //@param $field string 導出csv文件的列名
                    //@param $filename string 需要導出csv文件的名字
                    $where = '1';
                    if($_POST['crea_order'] == 1) $order = " c.vote_num desc";
                    $star = strtotime($_POST['control_star']);
                    $end = strtotime($_POST['control_end']);
                    if($star && $end) $where .= " and (c.vote_start_time between $star and $end) and (c.vote_end_time between $star and $end)";
                    $sql ="select c.sort_name,c.creative_id,c.creative_type,c.creative_name,c.creative_description,c.vote_num,c.comment_num,c.collect_num,c.create_time, u.username from cofco_creative as c left join cofco_userinfo as u on c.uid = u.uid where $where  order by $order ";
                    $lists = M()->query($sql);
                    $csv = '';
                    if(is_array($lists) && count($lists)>0){


                            if(empty($filename)) {
                                    $filename = date('Y-m-d',time()).'.csv';
                            }
                            header('Content-type:application/vnd.ms-excel');
                            header('Content-Disposition:attachment;filename='.$filename);
                            header('Pragma:no-cache');
                            header('Expires:0');


                            $csv = '創意標籤,提交者,創意分類,創意標題,創意簡述,得票數,評論數, 收藏數,上傳時間'."\n";
                            foreach($lists as $list =>$v) {
                                if($v['creative_type'] == 1){
                                    $type = '問題';
                                }elseif($v['creative_type'] == 2){
                                    $type = '解決方式';
                                }elseif($v['creative_type'] == 3){
                                    $type = '新創意';
                                }
                                $time = date("Y-m-d H:i:s",$v['create_time']);
                                    $csv .= $v['sort_name'].','.$v['username'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['vote_num'].','.$v['comment_num'].','.$v['collect_num'].','.$time."\n";
                            }
                            echo mb_convert_encoding($csv,"CP936","UTF-8");
                            
                    }else{
                        $this->assign("msg",$msg);
                    }
                    exit;
                }
        
        
        
        
        
        $this->display();
    }
}
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章