程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP實例:使用PHPExcel導入Excel2003文檔和Excel2007文檔到MySQL數據庫中,

PHP實例:使用PHPExcel導入Excel2003文檔和Excel2007文檔到MySQL數據庫中,

編輯:關於PHP編程

PHP實例:使用PHPExcel導入Excel2003文檔和Excel2007文檔到MySQL數據庫中,


如果要使用phpExcelReader將Excel 數據導入到mysql 數據庫,請讀者點擊這個文章查看。

使用phpExcelReader將Excel 數據導入到mysql 數據庫。

下面我們介紹另一種方法來實現導入Excel到MySQL數據庫。

1、到官網http://phpexcel.codeplex.com/下載PHPExcel類庫,我目前使用的是1.7.9版本。如圖:

PHPExcel下載

2、直接上代碼。

(1)、conn.php文件(這個不用介紹,你懂得):

PHP Code復制內容到剪貼板
  1. $mysql=mysql_connect("localhost","root","root");   
  2. mysql_select_db("test",$mysql);   
  3. mysql_query("set names GBK");  

(2)、HTML頁面部分:index.php文件(表單提交頁面):

XML/HTML Code復制內容到剪貼板
  1. <form name="form2" method="post" enctype="multipart/form- data" action="upload_excel.php">  
  2. <input type="hidden" name="leadExcel" value="true">  
  3. <table align="center" width="90% " border="0">  
  4. <tr>  
  5.    <td>  
  6.     <input type="file" name="inputExcel"><input type="submit" name="import" value="導入數據 ">  
  7.    </td>  
  8. </tr>  
  9. </table>  
  10. </form>  

(3)、表單處理處理程序部分:upload_excel.php文件:

PHP Code復制內容到剪貼板
  1. include("conn.php");   
  2. include("function.php");    
  3.   
  4. if($_POST ['import']=="導入數據 "){   
  5.   
  6.     $leadExcel=$_POST['leadExcel'];   
  7.        
  8.     if($leadExcel == "true")   
  9.     {   
  10.         //echo "OK";die();   
  11.         //獲取上傳的文件名   
  12.         $filename = $HTTP_POST_FILES['inputExcel'] ['name'];   
  13.         //上傳到服務器上的臨時文件名   
  14.         $tmp_name = $_FILES ['inputExcel']['tmp_name'];   
  15.            
  16.         $msg = uploadFile($filename,$tmp_name);   
  17.         echo $msg;   
  18.     }   
  19. }  

(4)、函數部分:function.php文件:

PHP Code復制內容到剪貼板
  1. //導入Excel文件   
  2. function uploadFile($file,$filetempname)    
  3. {   
  4.     //自己設置的上傳文件存放路徑   
  5.     $filePath = 'upFile/';   
  6.     $str = "";   
  7.     //下面的路徑按照你 PHPExcel的路徑來修改   
  8.     set_include_path('.'. PATH_SEPARATOR .'E:\php\AppServ\www\91ctcStudy\PHPExcelImportSQl2 \PHPExcel' . PATH_SEPARATOR .get_include_path());    
  9.          
  10.     require_once 'PHPExcel.php';   
  11.     require_once 'PHPExcel\IOFactory.php';   
  12.     //require_once 'PHPExcel\Reader\Excel5.php';//excel 2003   
  13.     require_once 'PHPExcel\Reader\Excel2007.php';//excel 2007   
  14.   
  15.     $filename=explode(".",$file);//把上傳的文件名以“.”好為准做一個數組。    
  16.     $time=date("y-m-d-H-i- s");//去當前上傳的時間    
  17.     $filename [0]=$time;//取文件名t替換    
  18.     $name=implode (".",$filename); //上傳後的文件名    
  19.     $uploadfile=$filePath.$name;//上傳後的文件名地址    
  20.   
  21.      
  22.     //move_uploaded_file() 函數 將上傳的文件移動到新位置。若成功,則返回 true,否則返回 false。   
  23.     $result=move_uploaded_file($filetempname,$uploadfile);//假如上傳到當前目錄下   
  24.     if($result) //如果上傳文件成功,就執行導入 excel操作   
  25.     {   
  26.        // $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2003   
  27.        $objReader = PHPExcel_IOFactory::createReader('Excel2007');//use excel2003 和  2007 format   
  28.        // $objPHPExcel = $objReader->load($uploadfile); //這個容易造成httpd崩潰   
  29.        $objPHPExcel = PHPExcel_IOFactory::load($uploadfile);//改成這個寫法就好了   
  30.   
  31.        $sheet = $objPHPExcel- >getSheet(0);    
  32.        $highestRow = $sheet- >getHighestRow(); // 取得總行數    
  33.        $highestColumn = $sheet- >getHighestColumn(); // 取得總列數   
  34.        
  35.         //循環讀取excel文件,讀取一條,插入一條   
  36.         for($j=2;$j<=$highestRow;$j++)   
  37.         {    
  38.             for($k='A';$k<=$highestColumn;$k++)   
  39.              {    
  40.                  $str .= iconv('utf-8','gbk',$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()).'\\';//讀 取單元格  
  41.             }   
  42.             //explode:函 數把字符串分割為數組。  
  43.             $strs =& nbsp;explode("\\",$str);  
  44.               
  45.             //var_dump ($strs);  
  46.             //die();  
  47.             $sql =&n bsp;"INSERT INTO z_test_importexcel(duty_date,name_am,name_pm) VALUES ('".$strs[0]."','".$strs[1]."','".$strs[2]."')";       
  48.             //echo $ sql;  
  49.             mysql_query ("set names GBK");//這就是指定數據庫字 符集,一般放在連接數據庫後面就系了   
  50.             if(! mysql_query($sql)){  
  51.               & nbsp; return false;  
  52.             }  
  53.             $str =&n bsp;"";  
  54.        }   
  55.      
  56.        unlink ($uploadfile); //刪除上傳的excel文件  
  57.        $msg = "導入成 功!";  
  58.     }else{  
  59.        $msg = "導入失 敗!";   
  60.     }   
  61.     return $msg;   
  62. }  

關於這個函數,參考了http://blog.csdn.net/grassroots20 11/article/details/8104604該博友的文章,但是,該博友的寫法,我認為有問題,至少 ,我用的

$objPHPExcel = $objReader->load ($uploadfile);

這一句寫法,在運行的時候,會出現:

Httpd.exe應用程序錯誤

或者是PHPExcel類庫官方後來升級了,調用方法需要改正一下吧,具體筆者就沒考究了。

3、通過上面的幾個步驟,讀者再分別准備一個xls和xlsx文檔就可以了,系統運行效果:

導入Excel到MySQL中

附件下載:完整DEMO下載(已含PHPExcel類庫)附件下載:完整DEMO下載(已含PHPExcel類庫)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved