1. 程式人生 > >tp3.2.3 PHPExcel 匯入資料庫

tp3.2.3 PHPExcel 匯入資料庫

最近開發的專案客戶有個Excel匯入的需求 將Excel中的資料匯入資料庫

這也是個比較老套的功能了  不過自己之前一直沒有做過  所以揣摩了半天時間  現在在這分享下

首先就是下載PHPExcel類,將下載好的類放置在專案的Org/Util目錄下 ,當然這個位置不是死的 ,也可以放在Vendor下  只要我們可以引入就可以


接下來是程式碼部分  HTML頁面就一個input  file框 記得加上enctype屬性  上傳後在PHP頁面的處理複製在下方

ublic  function uploadForm(){
            if (!empty($_FILES)){
            $upload = new \Think\Upload();                      // 例項化上傳類
            $upload->maxSize   =     10485760 ;                 // 設定附件上傳大小
            $upload->exts      =     array('xls','xlsx');       // 設定附件上傳型別
            $upload->rootPath  = './Public/Excel/';             // 設定附件上傳根目錄
            $upload->autoSub   = false;                         // 將自動生成以photo後面加時間的形式資料夾,關閉
            // 上傳檔案
            $info   =   $upload->upload();                                  // 上傳檔案
            $exts   = $info['file']['ext'];                                 // 獲取檔案字尾
            $filename = $upload->rootPath.$info['file']['savename'];        // 生成檔案路徑名
            if(!$info) {                                                    // 上傳錯誤提示錯誤資訊
                $this->error($upload->getError()); 
            }else{                                                          // 上傳成功
                import("Org.Util.PHPExcel.PHPExcel");                       // 匯入PHPExcel類庫,因為PHPExcel沒有用名稱空間,只能import匯入
                $PHPExcel = new \PHPExcel();                                // 建立PHPExcel物件,注意,不能少了\
                if ($exts == 'xls') {                                       // 如果excel檔案字尾名為.xls,匯入這個類
                    import("Org.Util.PHPExcel.Reader.Excel5");
                    $PHPReader = new \PHPExcel_Reader_Excel5();
                } else 

                    if ($exts == 'xlsx') {
                        import("Org.Util.PHPExcel.Reader.Excel2007");
                        $PHPReader = new \PHPExcel_Reader_Excel2007();

                    }
                $PHPExcel=$PHPReader->load($filename);
                $currentSheet = $PHPExcel->getSheet(0);                      // 獲取表中的第一個工作表,如果要獲取第二個,把0改為1,依次類推
                $allColumn = $currentSheet->getHighestColumn();              // 獲取總列數
                $allRow = $currentSheet->getHighestRow();                    // 獲取總行數
               for ($i = 2; $i <= $allRow; $i++) {
                    $data_p['lot'] =$PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
                    $data_p['goods_name'] =$PHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();
                    $data_p['min_evaluation'] =$PHPExcel->getActiveSheet()->getCell("C" .$i)->getValue();
                    $data_p['max_evaluation'] = $PHPExcel->getActiveSheet()->getCell("D". $i)->getValue();
                    $data_p['starting_price'] =$PHPExcel->getActiveSheet()->getCell("E" .$i)->getValue();
                    $data_p['goods_size'] =$PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue();
                    $data_p['goods_explain'] =$PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue();
                    $ex=M('auction_goods')->add($data_p);
              }
            if($ex){                                         
               $this->success("匯入成功");
            }else{
                $this->error("匯入失敗,原因可能是excel表中格式錯誤","5");// 提示錯誤
               }
            }
        }else {
          $this->display(); 
        }    
    }

  關鍵還是檔案引入