tp3.2.3 PHPExcel 匯入資料庫
阿新 • • 發佈:2019-01-28
最近開發的專案客戶有個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(); } }
關鍵還是檔案引入