PHPExcel如何将excel文件导入MySQL数据库?

来源:9-1 读取excel文件

wuzzxx

2015-09-14 09:40

请问将excel导入mysql数据库怎么导呢?/(ㄒoㄒ)/~~

而且只导入excel表的部分列,有些列的数据是不需要导入的,请问怎么做啊?大神请指教!

写回答 关注

3回答

  • wuzzxx
    2015-09-18 11:43:54

    改为另外一个方法咯。

    import.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; 
    } 
    }

     

    $dir=dirname(__FILE__);//查找当前脚本所在路径
    require $dir."/db.php";//引入mysql操作类文件
    $db=new db($link);//实例化db类 连接数据库
    require_once $dir."/PHPExcel/PHPExcel.php";//引入PHPExcel
    require_once $dir."/PHPExcel/PHPExcel/IOFactory.php";
    require_once $dir."/PHPExcel/PHPExcel/Reader/Excel5.php";
    //stackoverflow 方法
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
    $objReader->setReadDataOnly(true);
    $objPHPExcel = $objReader->load($uploadfile); 
    $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow(); 
    $highestColumn = $objWorksheet->getHighestColumn(); 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
    $rows = array();
    for ($row = 2; $row <= $highestRow; ++$row) {
    for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    $rows[$col] = mysql_real_escape_string($objWorksheet->getCellByColumnAndRow($col, $row)->getValue());
    }
    //print_r($rows);
    mysql_query("set names utf8");
    mysql_query("INSERT INTO `user`(username,class,score) 
    VALUES ('$rows[0]',$rows[1],$rows[2])")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."条数据!!!";


  • wuzzxx
    2015-09-15 16:59:18

    昨天还能插入两行,今天就只能插入一行,这是为什么呢/(ㄒoㄒ)/~~

  • wuzzxx
    2015-09-14 16:25:58

    自己解决了,我写了一个import.php和import.html,其中的db和dbconfig请参考Veo老师《PHPHExcel的探索之旅课程》

    import.html代码

    <!DOCTYPE html>
    <html><head><meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
    
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0 , maximum-scale=1.0, user-scalable=0">
    <title>Excel导入phpMyAdmin数据库</title>
    <form name="frm1" enctype="multipart/form-data" action="import.php" method="post">
       <input name="filename" type="file" /><input name="submit" type="submit" value="导入数据库" />
    </form>

    import.php代码

    <?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; 
    		 } 
    	 }
    	 
    	$dir=dirname(__FILE__);//查找当前脚本所在路径
    	require $dir."/db.php";//引入mysql操作类文件
    	$db=new db($phpexcel);//实例化db类 连接数据库
    	
    	require_once $dir."/PHPExcel/PHPExcel.php";//引入PHPExcel
    	require_once $dir."/PHPExcel/PHPExcel/IOFactory.php";
    	require_once $dir."/PHPExcel/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);
    	 //echo $strs[0];exit;
    	 $sql="insert into `user`(username,score,class) values ('$strs[0]',$strs[1],$strs[2])";
    	 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."条数据!!!";

    其中的phpexcel类库的路径根据自己的改,数据库配置你另外写也可以。insert into 语句根据你自己的情况自己写。

PHPExcel探索之旅

由浅入深学习PHPExcel导入导出操作,玩转任何文件操作需求

32712 学习 · 121 问题

查看课程

相似问题