zoukankan      html  css  js  c++  java
  • 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:phpAppServwww91ctcStudyPHPExcelImportSQl2 PHPExcel' . PATH_SEPARATOR .get_include_path());    
    9.          
    10.     require_once 'PHPExcel.php';   
    11.     require_once 'PHPExcelIOFactory.php';   
    12.     //require_once 'PHPExcelReaderExcel5.php';//excel 2003   
    13.     require_once 'PHPExcelReaderExcel2007.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类库)

  • 相关阅读:
    开博的第一天!
    使用EditText的addTextChangedListener(new TextWatcher())方法
    Activity的四种launchMode
    MySQL数据库
    BaseAdapter中重写getview的心得以及发现convertView回收的机制
    与数据库打交道的Adapter----SimpleCursorAdapter
    [原创] Fragment的添加、移除问题
    Datum Form Goole Android
    app包中的fragment和v4包中的fragment的使用的区别
    LayoutInflater类详解
  • 原文地址:https://www.cnblogs.com/echohao/p/4746102.html
Copyright © 2011-2022 走看看