phpexcel導入數據庫 基於thinkphp3.2


    public function studentImportExcel(){   

        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['excel']['ext'];                                 // 獲取文件后綴

            $filename = $upload->rootPath.$info['excel']['savename'];        // 生成文件路徑名

            if(!$info) {                                                     // 上傳錯誤提示錯誤信息

                $this->error($upload->getError()); 

            }else{                                                           // 上傳成功

                import("Org.Util.PHPExcel");                                 // 導入PHPExcel類庫,因為PHPExcel沒有用命名空間,只能inport導入

                $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 ($currentRow = 0; $currentRow <= $allRow; $currentRow ++) {// 循環獲取表中的數據,$currentRow表示當前行,從哪行開始讀取數據,索引值從0開始

                    for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn ++) {// 從哪列開始,A表示第一列

                        $address = $currentColumn . $currentRow;             // 數據坐標

                        $ExlData[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();// 讀取到的數據,保存到數組$arr中

                    }

                }

                $Hint = new \Operation\Controller\HintController();          // 生成操作類對象

                $data = studentImportExcel_RAW($ExlData);                    // 調用公用方法的讀數組並寫入數據庫操作

                $users = M('users');                                         // 生成數據庫對象

                $result = $users->addAll($data);                             // 批量寫入數據庫  

                if ($result) {                                               // 驗證

                    $Hint->mysuccee("導入成功", "2", "Admin/Users/studentManage");// 跳轉學生管理頁面

                } else {

                    $Hint->myerror("導入失敗,原因可能是excel表中有些用戶已被注冊。或表格格式錯誤","5");// 提示錯誤

                }

            }

        }else {

          $this->display(); 

        }    

                

}

 

function  studentImportExcel_RAW($ExlData){   // 將導入表中的數據添加到  數據庫數組中去

    $Hint = new \Operation\Controller\HintController();     // 生成操作類對象

    for($i = 2,$j=0;$i<sizeof($ExlData);$i++,$j++){

        $dataList[] = array(

            'username'=>$ExlData[$i]['A'],

            'pwd'     =>MD5(11),

            'realname'=>$ExlData[$i]['B'],

            'stunum'  =>$ExlData[$i]['C'],

            'email'   =>$ExlData[$i]['D'],

            'phone'   =>$ExlData[$i]['E'],

            'photo'   =>$Hint->randPhoto(),

            'role'    =>'1',

            'intro'   =>'這家伙很懶什么都沒留下',

            'regdate' =>date('Y-m-d H:i:s', time())         // 寫入注冊時間

        );

    }

    return $dataList;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM