首页 > 编程 > PHP > 正文

PHP实例:使用PHPExcel导入Excel2003文档和Excel2007文档到MySQL数据库中

2019-11-15 02:24:47
字体:
来源:转载
供稿:网友
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("setnamesGBK");

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

xml/HTML Code复制内容到剪贴板
  1. <formname="form2"method="post"enctype="multipart/form- data"action="upload_excel.php">
  2. <inputtype="hidden"name="leadExcel"value="true">
  3. <tablealign="center"width="90% "border="0">
  4. <tr>
  5. <td>
  6. <inputtype="file"name="inputExcel"><inputtype="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. if($_POST ['import']=="导入数据 "){
  4. $leadExcel=$_POST['leadExcel'];
  5. if($leadExcel=="true")
  6. {
  7. //echo"OK";die();
  8. //获取上传的文件名
  9. $filename=$HTTP_POST_FILES['inputExcel'] ['name'];
  10. //上传到服务器上的临时文件名
  11. $tmp_name=$_FILES ['inputExcel']['tmp_name'];
  12. $msg=uploadFile($filename,$tmp_name);
  13. echo$msg;
  14. }
  15. }

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

PHP Code复制内容到剪贴板
  1. //导入Excel文件
  2. functionuploadFile($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. require_once'PHPExcel.php';
  10. require_once'PHPExcel/IOFactory.php';
  11. //require_once'PHPExcel/Reader/Excel5.php';//excel2003
  12. require_once'PHPExcel/Reader/Excel2007.php';//excel2007
  13. $filename=explode(".",$file);//把上传的文件名以“.”好为准做一个数组。
  14. $time=date("y-m-d-H-i- s");//去当前上传的时间
  15. $filename [0]=$time;//取文件名t替换
  16. $name=implode (".",$filename);//上传后的文件名
  17. $uploadfile=$filePath.$name;//上传后的文件名地址
  18. //move_uploaded_file()函数 将上传的文件移动到新位置。若成功,则返回true,否则返回false。
  19. $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
  20. if($result)//如果上传文件成功,就执行导入 excel操作
  21. {
  22. // $objReader=PHPExcel_IOFactory::createReader('Excel5');//useexcel2003
  23. $objReader=PHPExcel_IOFactory::createReader('Excel2007');//useexcel2003和 2007format
  24. // $objPHPExcel=$objReader->load($uploadfile);//这个容易造成httpd崩溃
  25. $objPHPExcel=PHPExcel_IOFactory::load($uploadfile);//改成这个写法就好了
  26. $sheet=$objPHPExcel- >getSheet(0);
  27. $highestRow=$sheet- >getHighestRow();//取得总行数
  28. $highestColumn=$sheet- >getHighestColumn();//取得总列数
  29. //循环读取excel文件,读取一条,插入一条
  30. for($j=2;$j<=$highestRow;$j++)
  31. {
  32. for($k='A';$k<=$highestColumn;$k++)
  33. {
  34. $str.=iconv('utf-8','gbk',$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()).'//';//读 取单元格
  35. }
  36. //explode:函 数把字符串分割为数组。
  37. $strs=& nbsp;explode("//",$str);
  38. //var_dump ($strs);
  39. //die();
  40. $sql=&n bsp;"INSERTINTOz_test_importexcel(duty_date,name_am,name_pm)VALUES ('".$strs[0]."','".$strs[1]."','".$strs[2]."')";
  41. //echo$ sql;
  42. mysql_query ("setnamesGBK");//这就是指定数据库字 符集,一般放在连接数据库后面就系了
  43. if(! mysql_query($sql)){
  44. & nbsp;returnfalse;
  45. }
  46. $str=&n bsp;"";
  47. }
  48. unlink ($uploadfile);//删除上传的excel文件
  49. $msg="导入成 功!";
  50. }else{
  51. $msg="导入失 败!";
  52. }
  53. return$msg;
  54. }

关于这个函数,参考了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类库)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表