最近要用到excel的导入功能,我自己需要页面有文件的提交,然后转入后台进行处理,之后在前台页面显示结果就好了,上网找了一下,最终根据一位网友的分享,结合自己的实际情况写了如下文章:
显示页面index.php
/**
* 导入excel的显示层
* 2014/7/24 @author Lee
*/
?>
Filename:
后台处理:savetomysql.php <?php header('content-type:text/html;charset=utf-8'); /* * excel导入到mysql过程 * author lee * web http://www.diao48.com */ new saveToMysql(); class saveToMysql { var $excPath ; //excel表的路径 var $name; //要上传的文件的名字 var $type; //要上传的文件类型 var $size; //要上传的文件大小 var $tmp_name; //要上传的文件路径 var $server_name ; //数据库服务器 var $user ; //数据库用户名 var $password ; //数据库密码 var $database ; //选择的数据库名 var $table ; //表名 var $conn ; //数据库连接对象 /* * 导入类的构造函数 */ function __construct() { $this->conn(); $this->tbname='member'; //表名 $this->excPath = './excel/Book1.xls'; //excel文件地址 $this->getFile(); if ($this->impExcel()) { exit('ok'); } }//end func construct /* * 从提交的表单中获取文件的信息,关键是获取文件的临时存放路径 */ function getFile(){ $resuArr = $this->upload(); foreach ($resuArr as $key=>$value){ $this->$key = $resuArr[$key]; }//end foreach() }//end func getFile /* * 读取excel文件内容,并导入到数据库中去 */ function impExcel(){ /* 连接excel表(用法与access数据库类似) */ $conn=new com("adodb.connection"); $connstr="Driver={Microsoft Excel Driver (*.xls)};DBQ=".realpath("$this->tmp_name");//$this->tmp_name为excel的路径 //打开 book.xls 文件 $conn->open($connstr); $sql="select * from [Sheet1$]";//Excel 表下面的选项卡 $rs=$conn->execute($sql); /* 导入字段文件 */ $field_arr=array('id','name','pwd','pid','email');//数据库表中的字段名称 $field_str=implode(',',$field_arr); /* 循环导入到MySQL数据库中 */ while(!$rs->eof){ $value=''; foreach($field_arr as $v){ $value .= "'".iconv('gb2312','utf-8',$rs->fields($v)->value)."',"; } $sqls = "insert into ".$this->tbname."(".$field_str.") values(".trim($value,',').")"; $this->query($sqls); //把数据逐条插入数据库 $rs->movenext;//用在指针下移 } echo ""; }//end func impExcel() /* * 文件上传功能,通过从表单接收的文件信息,从而把文件Copy并保存到服务器的缓存文件中。 * 注: * 该方法现在只能允许单个文件的上传 */ function upload(){ if ($_FILES["file"]["error"] > 0){ echo "Error: " . $_FILES["file"]["error"] . "
"; }else{ return array( "name"=>$_FILES["file"]["name"], "type"=>$_FILES["file"]["type"], "size"=>$_FILES['file']['size'], "tmp_name"=>$_FILES['file']['tmp_name'] ); }//end if }//end func upload /* * 连接数据库 */ function conn(){ $this->server_name = "localhost"; $this->user = "root"; $this->password = "000111"; $this->database = "yxlego"; $this->conn = mysql_connect($this->server_name, $this->user, $this->password ) or die("数据库连接出错!"); mysql_select_db($this->database); //选择数据库 }//end func conn() //执行函数 function query($sql){ $result = mysql_db_query($this->database, $sql, $this->conn); return $result ; }//end func query(); }//end class ?>