thinkphp怎么把excel导入数据库

如题所述

    thinkPHP实现将excel导入到数据库中的方法体如下:

PHPExcel插件可点击此处本站下载。

这里使用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一个名为PHPExcel的文件夹,把classes里面的内容放到里面

下面是前端页面

提示:我在测试的时候遇到报错exception 'PHPExcel_Reader_Exception' with message 'The filename

原因是由于excel的文件后缀可能不同,我的文件后缀是xlsx,然后给把他另存为了xls的文件,就可以了

<html>

 <head>

 </head>

 <body>

  <form action="{pigcms::U('Jdb/abcdefgwulisuibian')}" method="post" enctype="multipart/form-data">

   <input type="file" name="import"/>

   <input type="hidden" name="table" value="tablename"/>

   <input type="submit" value="导入"/>

  </form>

 </body>

</html>


下面是php的

function abcdefgwulisuibianuplod(){

  $this->display();//显示页面

}

function abcdefgwulisuibian(){

  if (!empty($_FILES)) {

   import("@.ORG.UploadFile");

   $config=array(

    'allowExts'=>array('xlsx','xls'),

    'savePath'=>'./Public/upload/',

    'saveRule'=>'time',

   );

   $upload = new UploadFile($config);

   if (!$upload->upload()) {

    $this->error($upload->getErrorMsg());

   } else {

    $info = $upload->getUploadFileInfo();

   }

   vendor("PHPExcel.PHPExcel");

    $file_name=$info[0]['savepath'].$info[0]['savename'];

    $objReader = PHPExcel_IOFactory::createReader('Excel5');

    $objPHPExcel = $objReader->load($file_name,$encode='utf-8');

    $sheet = $objPHPExcel->getSheet(0);

    $highestRow = $sheet->getHighestRow(); // 取得总行数

    $highestColumn = $sheet->getHighestColumn(); // 取得总列数

    for($i=2;$i<=$highestRow;$i++)//这个地方根据需要,一般第一行是名称,所以从第二行开始循环,也可以从第一行开始

    {

     $data['lianjieid'] = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();//数据库字段和excel列相对应

     $data['yaoqingma'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();

     $data['dlmima']= $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();

     $data['ljdizhi']= $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();

     M('jdb')->add($data);//插入数据库

    }

     $this->success('导入成功!');

  }else

   {

    $this->error("请选择上传的文件");

   }

}

温馨提示:答案为网友推荐,仅供参考
相似回答