phpexcel导入excel到数据库实例代码

发布时间:2021-01-11编辑:脚本学堂
一个phpexcel导入excel到数据库中的实例代码,学习下phpexcel类库的用法,有需要的朋友参考下。

例子,phpexcel导入excel文件内容到数据库中。
 

<?php
if($_POST['file_stu'] == "true")
{
    $filename = $_FILES['inputExcel']['name'];
    $tmp_name = $_FILES['inputExcel']['tmp_name'];
    $msg = uploadFile($filename,$tmp_name);
    echo $msg;
}

//导入Excel文件
function uploadFile($file,$filetempname)
{
    //自己设置的上传文件存放路径
    $filePath = 'upFile/';
    $str ="";
    //下面存放excel路径

    require_once 'PHPExcel/PHPExcel.php';
    require_once 'PHPExcel/IOFactory.php';
    require_once 'PHPExcel/Reader/Excel5.php';

    //注意设置时区
    $time=date("y-m-d-H-i-s");//去当前上传的时间
    //获取上传文件的扩展名
    $extend=strrchr ($file,'.');
    //上传后的文件名
    $name=$time.$extend;
    $uploadfile=$filePath.$name;//上传后的文件名地址 
    //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
    $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
    echo $result;

    if($result) //如果上传文件成功,就执行导入excel操作
    {
        include "../data/common.inc.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(); //取得总列数
        
       // 循环读取excel文件,读取一条,插入一条
        for($j=1;$j<=$highestRow;$j++)      //从第一行开始读取数据
        { 
            for($k='A';$k<=$highestColumn;$k++)            //从A列读取数据
            { 
                
                //这种方法简单,但有不妥,以''合并为数组,再分割为字段值插入到数据库
                //实测在excel中,如果某单元格的值包含了导入的数据会为空        
                
           $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'';//读取单元格
            } 
            echo $str; 

die();
//explode:函数把字符串分割为数组。
$strs = explode("",$str);
print_r($strs);
exit;
            $sql = "insert into dede_arctype(
`reid` ,
`topid` ,
`sortrank` ,
`typename` ,
`typedir` ,
`isdefault` ,
`defaultname` ,
`issend`
)
values (
'".$strs[0]."','".$strs[1]."','". $strs[2]."','". $strs[3]."','". $strs[4]."','". $strs[5]."','". $strs[6]."','". $strs[7]."')";

        }  
        unlink($uploadfile); //删除上传的excel文件
        $msg = "导入成功!";
}
}

/*class ExcelToArrary {
public function __construct() {
 //导入phpExcel核心类    注意 :你的路径跟我不一样就不能直接复制
     include_once('Classes/PHPExcel.php');
}

//*

//* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8

//*以下基本都不要修改

public function read($filename,$encode='utf-8')
{
$objReader = PHPExcel_IOFactory::createReader('Excel5'); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($filename); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 
$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 

excelData==array();
for ($row = 1; $row <= $highestRow; $row++) { 
for ($col = 0; $col < $highestColumnIndex; $col++) { 
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
           } 
} 
 return $excelData; 
 }     
}

if (! empty ( $_FILES ['file_stu'] ['name'] )) 
{
    $tmp_file = $_FILES ['file_stu'] ['tmp_name'];
    $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
    $file_type = $file_types [count ( $file_types ) - 1];

     //判别是不是.xls文件,判别是不是excel文件
    /* if (strtolower ( $file_type ) != "xls")              
    {
          $this->error ( '不是Excel文件,重新上传' );
     }*/

    //设置上传路径
/*     $savePath ='/upFile/';

    //以时间来命名上传的文件
     $str = date ( 'Ymdhis' ); 
     file_name==  $str . "." . $file_type;

     //是否上传成功
     if (! copy ( $tmp_file, $savePath . $file_name ))
      {
          $this->error ( '上传失败' );
      }

//*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
//注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
$res =Service('ExcelToArray')->read($savePath . $file_name );

//重要代码 解决Thinkphp M、D方法不能调用的问题   
//如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码

spl_autoload_register ( array ('Think', 'autoload' ) );

//对生成的数组进行数据库的写入
foreach ( $res as $k => $v ) 
{
       if ($k != 0) 
      {
           $data ['uid'] = $v [0];
           $data ['password'] = sha1 ( '111111' );
           $data ['email'] = $v [1];

           $data ['uname'] = $v [3];

          $data ['institute'] = $v [4];
         $result = M ( 'user' )->add ( $data );
         if (! $result) 
         {
              $this->error ( '导入数据库失败' );
          }
      }
   }
}
*/
?>

<h3>导入Excel表:</h3>
<form method="post" action="excel_add.php" enctype="multipart/form-data">
  <input  type="hidden" name="inputExcel"  value="true"  />
      <input  type="file" name="file_stu"/>
      <input type="submit"  value="update" />
</form>