PHP Excel導入數據到MySQL數據庫

數據導出已經有了,怎麼能沒有數據導入呢,一樣使用TP5框架,首先須要下載phpexcel.zip,放到第三方類庫目錄vendor目錄下,而後有一個頁面能夠讓你選擇要導入的Excel文件,而後點擊導入按鈕調用接口:php

個人模板內的數據以下圖:數據庫

後端接口代碼以下:json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public  function  uplExcel(Request  $request )
{
     if  (! empty ( $_FILES [ 'excel' ][ 'name' ])) {
         $fileName  $_FILES [ 'excel' ][ 'name' ];     //獲得文件全名
         $dotArray  explode ( '.' $fileName );     //把文件名安.區分,拆分紅數組
         $type  end ( $dotArray );<br>
         if  ( $type  !=  "xls"  &&  $type  !=  "xlsx" ) {
             $ret [ 'res' ] =  "0" ;
             $ret [ 'msg' ] =  "不是Excel文件,請從新上傳!" ;
             return  json_encode( $ret );
         }
 
         //取數組最後一個元素,獲得文件類型
         $uploaddir  "../uploads2/"  date ( "Y-m-d" ) .  '/' ; //設置文件保存目錄 注意包含
         if  (! file_exists ( $uploaddir )) {
             mkdir ( $uploaddir , 0777, true);
         }
 
         $path  $uploaddir  . md5(uniqid(rand())) .  '.'  $type //產生隨機文件名
         //$path = "images/".$fileName; //客戶端上傳的文件名;
         //下面必須是tmp_name 由於是從臨時文件夾中移動
         move_uploaded_file( $_FILES [ 'excel' ][ 'tmp_name' ],  $path );  //從服務器臨時文件拷貝到相應的文件夾下
 
         $file_path  $path ;
         if  (! file_exists ( $path )) {
             $ret [ 'res' ] =  "0" ;
             $ret [ 'msg' ] =  "上傳文件丟失!"  $_FILES [ 'excel' ][ 'error' ];
             return  json_encode( $ret );
         }
 
         //文件的擴展名
         $ext  strtolower ( pathinfo ( $path , PATHINFO_EXTENSION));
         if  ( $ext  ==  'xlsx' ) {
             $objReader  = \PHPExcel_IOFactory::createReader( 'Excel2007' );
             $objPHPExcel  $objReader ->load( $file_path 'utf-8' );
         elseif  ( $ext  ==  'xls' ) {
             $objReader  = \PHPExcel_IOFactory::createReader( 'Excel5' );
             $objPHPExcel  $objReader ->load( $file_path 'utf-8' );
         }
 
         $sheet  $objPHPExcel ->getSheet(0);
         $highestRow  $sheet ->getHighestRow();  // 取得總行數
         $highestColumn  $sheet ->getHighestColumn();  // 取得總列數
         $ar  array ();
         $i  = 0;
         $importRows  = 0;
         for  ( $j  = 2;  $j  <=  $highestRow $j ++) {
             $importRows ++;<br>
             $realName  = (string) $objPHPExcel ->getActiveSheet()->getCell( "A$j" )->getValue(); //須要導入的realName
             $phone  = (string) $objPHPExcel ->getActiveSheet()->getCell( "B$j" )->getValue();    //須要導入的phone
             $company  = (string) $objPHPExcel ->getActiveSheet()->getCell( "C$j" )->getValue();  //須要導入的company
             $job  = (string) $objPHPExcel ->getActiveSheet()->getCell( "D$j" )->getValue();      //須要導入的job
             $email  = (string) $objPHPExcel ->getActiveSheet()->getCell( "E$j" )->getValue();    //須要導入的email
             $ret [ 'mdata' ] =  $this ->addMemb( $phone $realName $company $job $email ); //這裏就是個人數據庫添加操做定義的一個方法啦,對應替換爲本身的
 
             if  ( $ret [ 'mdata' ] && ! is_Bool ( $ret [ 'mdata' ])) {
                 $ar [ $i ] =  $ret [ 'mdata' ];
                 $i ++;
             }
         }
         if  ( $i  > 0) {
             $ret [ 'res' ] =  "0" ;
             $ret [ 'errNum' ] =  $i ;
             $ret [ 'allNum' ] =  $importRows ;
             $ret [ 'sucNum' ] =  $importRows  $i ;
             $ret [ 'mdata' ] =  $ar ;
             $ret [ 'msg' ] =  "導入完畢!" ;
             return  json_encode( $ret );
         }
         $ret [ 'res' ] =  "1" ;
         $ret [ 'allNum' ] =  $importRows ;
         $ret [ 'errNum' ] = 0;
         $ret [ 'sucNum' ] =  $importRows ;
         $ret [ 'mdata' ] =  "導入成功!" ;
         return  json_encode( $ret );
     else  {
         $ret [ 'res' ] =  "0" ;
         $ret [ 'msg' ] =  "上傳文件失敗!" ;
         return  json_encode( $ret );
     }
}
相關文章
相關標籤/搜索