从Excel文件读取数据批量导入到Mysql数据库

来源:互联网 发布:centos 6.5 cacti 编辑:程序博客网 时间:2024/04/30 00:25

      这些天有个项目用到了PHP+MySQL和Excel的交互,需要导入和导出。所以,昨天摸索了一下,发现网上有很多有问题。经过自己的测试,我的可以正常在服务器上运行,在这里和大家分享一下。

    准备文件:1)首先准备好PHPExcel:到官方网站http://phpexcel.codeplex.com/下载最近版本的PHPExcel,解压后会发现里面有class、Documentation、Tests三个文件夹和三个txt的日志文件,主要用到的是Class文件,而Tests主要是一些demo示例。2)Excel文件。如我的是:

               

    从Excel文件读取数据批量导入到Mysql数据库。导入Xls处理流程:选择xls文件->上传xls文件到服务器->通过PHP-ExcelReader解析excel->批量入库。

    下面进行导入:

    第一步:建立数据库和数据表(按照自己的Excel数据设立字段)。

CREATE DATABASE php_excel;USE php_excel;CREATE TABLE IF NOT EXISTS php_excel(id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,gid varchar(20) NOT NULL,stu_no varchar(20) NOT NULL,name varchar(45) NOT NULL,age int(4) NOT NULL)ENGINE=MyISAM DEFAULT CHARSET=utf8;


    第二步:前台index.php文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>phpexcel导入excel数据到MYSQL数据库</title></head><body><form name="frm1"  action="insertdb.php" method="post" enctype="multipart/form-data"><input name="filename" type="file" /><input name="submit" type="submit" value="import" /></form></body></html>

 

    第三步:向数据库插入数据的insertdb.php文件。

session_start();header("Content-type:text/html;charset:utf-8");//全局变量$succ_result=0;$error_result=0;$file=$_FILES['filename'];$max_size="2000000"; //最大文件限制(单位:byte)$fname=$file['name'];$ftype=strtolower(substr(strrchr($fname,'.'),1)); //文件格式$uploadfile=$file['tmp_name'];if($_SERVER['REQUEST_METHOD']=='POST'){if(is_uploaded_file($uploadfile)){  if($file['size']>$max_size){echo "Import file is too large"; exit; }if($ftype!='xls'){echo "Import file type is error";exit;   }}else{echo "The file is not empty!";exit;  } }require("./conn.php");  //连接mysql数据库//调用phpexcel类库require_once 'PHPExcel.php'; require_once 'PHPExcel\IOFactory.php';require_once 'PHPExcel\Reader\Excel5.php';$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format $objPHPExcel = $objReader->load($uploadfile); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数  $arr_result=array();  $strs=array();for($j=2;$j<=$highestRow;$j++) {     unset($arr_result);    unset($strs); for($k='A';$k<= $highestColumn;$k++)    {      //读取单元格  $arr_result  .= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().',';    } $strs=explode(",",$arr_result); $sql="insert into php_excel(gid,stu_no,name,age) values ($strs[0],'$strs[1]','$strs[2]',$strs[3])"; echo $sql."<br/>";  mysql_query("set names utf8"); $result=mysql_query($sql) or die("执行错误"); $insert_num=mysql_affected_rows();  if($insert_num>0){        $succ_result+=1;    }else{        $error_result+=1;   }}echo "插入成功".$succ_result."条数据!!!<br>";echo "插入失败".$error_result."条数据!!!";


其中conn.php代码如下:

$mysql=mysql_connect("localhost","root","") or die("数据库连接失败!");mysql_select_db("php_excel",$mysql);mysql_query("set names utf8");

 

我的导入效果如下:

至此,从Excel文件读取数据批量导入到Mysql数据库 完成。

原创粉丝点击