PHPExcel導出各種方法總結

PHPExcel導出

方法一、

https://blog.csdn.net/u014236259/article/details/60601767

   
 public function ExportExcelOrder($data, $name)
 {
        vendor('PHPExcel.PHPExcel');     //引入PHPExcel類
        $objPHPExcel = new \PHPExcel();  //實例化  相當於在桌面新建一個excel
        // 表頭
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'id')
            ->setCellValue('B1', '訂單編號')
            ->setCellValue('C1', '收貨人姓名')
            ->setCellValue('D1', '收貨人電話')
            ->setCellValue('E1', '地址')
            ->setCellValue('F1', '省份')
            ->setCellValue('G1', '返現金額')
            ->setCellValue('H1', '品牌名稱');
        //設置內容水平居中
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        // 設置個表格寬度
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(24);
        //設置單元格自動寬度
        $objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
        // 內容
        for ($i = 0, $len = count($data); $i < $len; $i++) {
            $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 2), $data[$i]['part_order_id']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 2), $data[$i]['order_id']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 2), $data[$i]['accept_name']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 2), $data[$i]['phone']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 2), $data[$i]['address']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 2), $data[$i]['province_id']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('G' . ($i + 2), $data[$i]['cashback']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('H' . ($i + 2), $data[$i]['brand_name']);
            //設置內容水平居中
            $objPHPExcel->setActiveSheetIndex(0)->getStyle($i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        }
        $objPHPExcel->getActiveSheet()->setTitle('User');
        $objPHPExcel->setActiveSheetIndex(0);
        ob_end_clean();//清楚緩存區,解決亂碼問題
        header("Pragma:public");
        header("Content-Type:application/x-msexecl;name=\"{$name}.xlsx\"");
        header("Content-Disposition:inline;filename=\"{$name}.xlsx\"");
        $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
        $objWriter->save('php://output');
        exit;
    }

     //導出excel
vendor('PHPExcel.PHPExcel');     //引入PHPExcel類
        $objPHPExcel = new \PHPExcel();  //實例化  相當於在桌面新建一個excel
        // 表頭
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'id')
            ->setCellValue('B1', '訂單編號')
            ->setCellValue('C1', '收貨人姓名')
            ->setCellValue('D1', '收貨人電話')
            ->setCellValue('E1', '地址')
            ->setCellValue('F1', '省份')
            ->setCellValue('G1', '返現金額')
            ->setCellValue('H1', '品牌名稱');
        //設置內容水平居中
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        // 設置個表格寬度
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(24);
        //設置單元格自動寬度
        $objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
        // 內容
        for ($i = 0, $len = count($data); $i < $len; $i++) {
            $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 2), $data[$i]['part_order_id']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 2), $data[$i]['order_id']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 2), $data[$i]['accept_name']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 2), $data[$i]['phone']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 2), $data[$i]['address']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 2), $data[$i]['province_id']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('G' . ($i + 2), $data[$i]['cashback']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('H' . ($i + 2), $data[$i]['brand_name']);
            //設置內容水平居中
            $objPHPExcel->setActiveSheetIndex(0)->getStyle($i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        }
        $objPHPExcel->getActiveSheet()->setTitle('User');
        $objPHPExcel->setActiveSheetIndex(0);
        ob_end_clean();//清楚緩存區,解決亂碼問題
        header("Pragma:public");
        header("Content-Type:application/x-msexecl;name=\"{$name}.xlsx\"");
        header("Content-Disposition:inline;filename=\"{$name}.xlsx\"");
        $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
        $objWriter->save('php://output');
        exit;
    }

     //導出excel
    public function push()
    {
        $data = M()->table("part_order")->where(['user_id'=>1583])->select();
        $fileName = "導出訂單時間".date('Ymd');
        $this->ExportExcelOrder($data, $fileName);
    }


 

方法二、

 public function export($title,$data,$fileName)
    {
        vendor('PHPExcel.PHPExcel');
        $objPHPExcel = new \PHPExcel();
        //橫向單元格標識
        $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H');
        $objPHPExcel->getActiveSheet(0)->setTitle('我的訂單');   //設置sheet名稱
        $_row = 1;   //設置縱向單元格標識
        if($title){
            $_cnt = count($title);
            //合併單元格  設置字體加粗 字號
            $objPHPExcel->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row)->getStyle()
                ->getFont()->setBold(true)->setSize(13);
            //字體水平居中
            $objPHPExcel->getActiveSheet(0)->getStyle('A'.$_row.':'.$cellName[$_cnt-1].$_row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            //設置合併後的單元格內容
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$_row, '訂單導出:'.date('Y-m-d H:i:s'));

            $_row++;
            $i = 0;
            foreach($title AS $v){
                $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension($cellName[$i].$_row)->setAutoSize(true);//設置單元格自動寬度
                $objPHPExcel->setActiveSheetIndex(0)->getStyle($cellName[$i].$_row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);//單個單元格居左
                //設置列標題
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v);
                $i++;
            }
            $_row++;
        }
        //填寫數據
        if($data){
            $i = 0;
            foreach($data AS $_v){
                $j = 0;
                foreach($_v AS $_cell){
                    $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell);
                    $j++;
                }
                $i++;
            }
        }
        //文件名處理
        if(!$fileName){
            $fileName = uniqid(time(),true);
        }
        header("Pragma:public");
        header("Content-Type:application/x-msexecl;name=\"{$fileName}.xlsx\"");
        header("Content-Disposition:inline;filename=\"{$fileName}.xlsx\"");
        $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
        $objWriter->save('php://output');
        exit;
    }

      //導出excel
    public function pull()
    {
        $title = ['id','訂單編號','收貨人姓名','收貨人電話','地址','省份','返現金額','品牌名稱'];
        $data = M()->table("part_order")
            ->field("part_order_id,order_id,accept_name,accept_phone,address,province_id,cashback,brand_name")
            ->where(['user_id'=>1583])->select();
        $fileName = "導出訂單時間".date('Ymd');
        $this->export($title,$data,$fileName);
    }

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章