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>

 

你可能感兴趣的:(PHP)