tp5 excel導出類

1.引入Loaderphp

use think\Loader;

 

2.導出方法:瀏覽器

/**

 * excel表格導出
 * @param string $fileName 文件名稱
 * @param array $headArr 表頭名稱
 * @param array $data 要導出的數據
 * @author static7  */

function excelExport($fileName = '', $headArr = [], $data = [], $widths=[]) {
    $fileName = iconv("UTF-8", "GB2312//IGNORE", @$fileName);
    $fileName .=".xls";
    Loader::import('PHPExcel.PHPExcel');
    Loader::import('PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory');
    $objPHPExcel = new \PHPExcel();
    $objPHPExcel->getProperties();
    $ordA = ord('A'); //65
    $key2 = ord("@"); //64
    foreach ($headArr as $v) {
        if($ordA > ord("Z"))
        {
            $colum = chr(ord("A")).chr(++$key2);//超過26個字母 AA1,AB1,AC1,AD1...BA1,BB1...
        }else{
            $colum = chr($ordA++);
        }
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
    }
    $column = 2;
    $objActSheet = $objPHPExcel->getActiveSheet();
    foreach ($data as $key => $rows) { // 行寫入
        $ordA = ord('A');//從新從A開始
        $key2 = ord("@"); //64
            foreach ($rows as $keyName => $value) { // 列寫入
                if($ordA > ord("Z"))
                {
                    $colum = chr(ord("A")).chr(++$key2);//超過26個字母 AA1,AB1,AC1,AD1...BA1,BB1...
                }else{
                    $colum = chr($ordA++);
                }
                $objActSheet->setCellValue($colum . $column, $value);
            }
        $column++;
    }
    //表格寬度
    if(count($widths)){
        $ordA = ord('A');//從新從A開始
        $key2 = ord("@"); //64
        foreach ($widths as  $value) { // 列寫入
            if($ordA > ord("Z"))
            {
                $colum = chr(ord("A")).chr(++$key2);//超過26個字母 AA1,AB1,AC1,AD1...BA1,BB1...
            }else{
                $colum = chr($ordA++);
            }
            $objActSheet->getColumnDimension($colum)->setWidth($value);
        }
    }
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    //$objWriter->save('./excelFile/'.$fileName);
    header('Content-Type: application/vnd.ms-excel');//告訴瀏覽器將要輸出excel03文件
    header('Content-Disposition: attachment;filename="'.$fileName.'"');//告訴瀏覽器將輸出文件的名稱(文件下載)
    header('Cache-Control: max-age=0');//禁止緩存
    $objWriter->save("php://output");
}

 

3.調用緩存

                //整理顯示數據
          $data[$k]['seller']=Db::table('ims_bj_shopn_member')->where('id',$v['staffid'])->value('realname'); $data[$k]['sign']=$v['sign']; $data[$k]['title']=$v['title']; $data[$k]['bsc']=Db::table('sys_departbeauty_relation')->alias('r')->join(['sys_department' => 'd'],'r.id_department=d.id_department','left')->where('r.id_beauty',$v['storeid'])->value('d.st_department'); $data[$k]['order_sn']="\t".$v['order_sn']."\t"; $data[$k]['p_name']=$v['p_name']; $data[$k]['p_price']=$v['tuan_price']; $data[$k]['insert_time']=date('Y-m-d H:i:s',$v['insert_time']); $data[$k]['success_time']=date('Y-m-d H:i:s',$v['success_time']); $data[$k]['status']=$statusText; $data[$k]['fqr_pay']=$sonList[0]['pay_price']; $data[$k]['fqr_tel']=$sonList[0]['mobile']; $data[$k]['cantuan1']=$sonList[1]['realname']; $data[$k]['cantuan1_tel']=$sonList[1]['mobile']; $data[$k]['cantuan1_pay']=$sonList[1]['mobile']?$sonList[1]['pay_price']:''; $data[$k]['cantuan1_num']=$sonList[1]['join_num']; $data[$k]['cantuan2']=$sonList[2]['realname']; $data[$k]['cantuan2_tel']=$sonList[2]['mobile']; $data[$k]['cantuan2_pay']=$sonList[2]['mobile']?$sonList[2]['pay_price']:''; $data[$k]['cantuan2_num']=$sonList[2]['join_num'];; $data[$k]['cantuan3']=$sonList[3]['realname']; $data[$k]['cantuan3_tel']=$sonList[3]['mobile']; $data[$k]['cantuan3_pay']=$sonList[3]['mobile']?$sonList[3]['pay_price']:''; $data[$k]['cantuan3_num']=$sonList[3]['join_num'];; $searchOrder=Db::name('tuan_list')->where(['create_uid'=>$v['create_uid'],'status'=>2])->whereTime('begin_time', '<', $v['begin_time'])->count(); $data[$k]['is_first']=$searchOrder?0:1; $data[$k]['number']=$join_num; $seaMap['list.create_uid']=array('neq',$v['create_uid']); $seaMap['list.status']=array('eq',2); $seaMap['list.order_sn']=array('neq',$v['order_sn']); $seaMap['order.uid']=array('eq',$v['create_uid']); $searchJoinOrder=Db::name('tuan_order')->alias('order')->join('tuan_list list','order.parent_order=list.order_sn','left')->where($seaMap)->whereTime('order.insert_time', '<', $v['begin_time'])->count(); $data[$k]['is_join']=$searchJoinOrder?1:0;        
        //調用導出
        $filename = "拼團訂單列表".date('YmdHis'); $header = array ('活動發起人','所屬美容師','所屬門店編碼','所屬門店名稱','所屬辦事處','拼購單號','拼購商品','商品總價','發起時間','成團時間','拼購狀態','發起人支付金額','發起人手機號碼','參團人1','手機號碼','支付金額','參團人1拓客留客','參團人2','手機號碼','支付金額','參團人2拓客留客','參團人3','手機號碼','支付金額','參團人3拓客留客','發起人是否首次發起','參團人數','是否參加過拼團'); $widths=array('15','20','20','30','30','30','60','10','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20'); if($data) { excelExport($filename, $header, $data, $widths);//生成數據         }
相關文章
相關標籤/搜索