1. 程式人生 > >tp5中匯入帶圖片的excel表格資料

tp5中匯入帶圖片的excel表格資料

控制器裡:

 /**
     * 訂單匯入(excel匯入)
     */
    public function import()
    {
        if(request()->isPost()){
            if (!empty($_FILES)){
                import('PHPExcel.PHPExcel', EXTEND_PATH);
                $PHPExcel = new \PHPExcel();
                $file = request()->file('order');
                if($file){
                    //var_dump($file);die;
                    $info = $file->move(ROOT_PATH . 'Uploads' . DS . 'Excel');
                    if($info){
                        $exclePath = $info->getSaveName();  //獲取檔名
                        $file_name = ROOT_PATH . 'Uploads' . DS . 'Excel' . DS . $exclePath;   //上傳檔案的地址
                        $extension = strtolower( pathinfo($file_name, PATHINFO_EXTENSION));
                        if($extension =='xlsx'){
                            $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
                        }else if($extension =='xls'){
                            $objReader = \PHPExcel_IOFactory::createReader('Excel5');
                        }
                        $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //載入檔案內容,編碼utf-8
                        $a = $obj_PHPExcel->getsheet(0);
                        $imgData=array();
                        $imageFilePath='public/goods/';//圖片儲存目錄
                        foreach($a->getDrawingCollection() as $img){
                            list ($startColumn, $startRow) = \PHPExcel_Cell::coordinateFromString($img->getCoordinates());//獲取列與行號
                            $imageFileName=date('Ymd').$startRow.mt_rand(100,999);
                            /*表格解析後圖片會以資源形式儲存在物件中,可以通過getImageResource函式直接獲取圖片資源然後寫入本地檔案中*/
                            switch ($img->getMimeType()){//處理圖片格式
                                case 'image/jpg':
                                case 'image/jpeg':
                                    $imageFileName.='.jpg';
                                    imagejpeg($img->getImageResource(),$imageFilePath.$imageFileName);
                                    break;
                                case 'image/gif':
                                    $imageFileName.='.gif';
                                    imagegif($img->getImageResource(),$imageFilePath.$imageFileName);
                                    break;
                                case 'image/png':
                                    $imageFileName.='.png';
                                    imagepng($img->getImageResource(),$imageFilePath.$imageFileName);
                                    break;
                            }
                            $tb_data[$startRow-2]['to_image']=$imageFileName;//追加到陣列中去
                        }
//                        var_dump($imgData);die;

                        $excel_array=$obj_PHPExcel->getsheet(0)->toArray();   //轉換為陣列格式  
                        array_shift($excel_array);  //刪除第一個陣列(標題); 
                        $i=0;
                        // var_dump($excel_array);die;
                        foreach($excel_array as $k=>$v) { 
//                            $tb_data = [];
                            $tb_data[$k]['to_order_id'] = $v[0];
                            $tb_data[$k]['to_buyer_name'] = $v[1];
                            $tb_data[$k]['to_buy_time'] = $v[2];
                            $tb_data[$k]['to_pay_time'] = $v[3];
                            $tb_data[$k]['to_address'] = $v[4];
                            $tb_data[$k]['to_name'] = $v[5];
                            $tb_data[$k]['to_phone'] = $v[6];
                            $tb_data[$k]['to_tel'] = $v[7];
                            $tb_data[$k]['to_province'] = $v[8];
                            $tb_data[$k]['to_city'] = $v[9];
                            $tb_data[$k]['to_area'] = $v[10];
                            $tb_data[$k]['to_message'] = $v[11];
                            $tb_data[$k]['to_remark'] = $v[12];
                            $tb_data[$k]['to_sub_id'] = $v[13];
                            $tb_data[$k]['to_goods_name'] = $v[15];
                            $tb_data[$k]['to_code'] = $v[16];
                            $tb_data[$k]['to_sku'] = $v[17];
                            $tb_data[$k]['to_color_size'] = $v[18];
                            $tb_data[$k]['to_number'] = $v[19];
                            $tb_data[$k]['to_create'] = time();
                            $tb_data[$k]['to_modified'] = time();
                            //入庫(淘寶訂單)
                            $res = Db::table('kjds_tb_order')->insertGetId($tb_data[$k]);
                            $this->checkGoods($tb_data[$k],$res);
                        }
                        if($res){
                            $this->success("匯入成功");
                        }else{
                            $this->error("匯入失敗");
                        }
                    }else{
                        $this->error("檔案上傳失敗"); 
                    }
                }else{
                    $this->success("未上傳檔案");
                }
            }else{
                $this->success("未上傳檔案");
            }
        }else{
            $this->success("未上傳檔案");
        }
    }