thinkphp整合phpExcel将excel数据导入到mysql中

PHP 2488浏览 评论

| 很多时候要用到将excel的数据通过php程序导入到mysql中,下面我们来整合thinkphp与phpExcel,哈哈,这个是之前用tp3.2的时候的代码了,最近使用thinkphp5.0还没做到这个功能,后面有更新再出个给大家,暂且就拿3.2的来代替一番!

  • 首先下载phpExxcel放在Thinkphp/Library/Vendor下即可

image.png

  • 封装导入数据类,我直接上代码了

<?php
/**
 * Created by PhpStorm.
 * User: Tangyijun
 * Date: 2017/3/25 0025
 * Time: 11:35
 */
namespace Admin\Controller;
use Models\Model\GlobalModel;
vendor('phpExcel.PHPExcel');
vendor('phpExcel.PHPExcel.IOFactory');
Vendor("PHPExcel.Reader.Excel5");
Vendor("PHPExcel.Reader.Excel2007");
class ExcelController extends BaseController{
    public function uploadFile(){
        try{
        
            if(empty($_FILES))
                throw new \Exception('没上传文件',10020);
            $result = uploadImage(); //上传excel文件 返回路径
            if(!empty($result['error'])){
                throw new \Exception($result['error'],10020);
            }
            
            $type = 'Excel2007';//设置为Excel5代表支持2003或以下版本,Excel2007代表2007版
            $objReader = \PHPExcel_IOFactory::createReader($type);
            $objPHPExcel = $objReader->load('.'.$result['excel']);
            $excelArray=$objPHPExcel->getsheet(0)->toArray();
            array_shift($excelArray);//将第一行移出数组
            $merchant = new GlobalModel('merchant'); //实例化模型
            foreach($excelArray as $v){
                if(empty($v[0])){continue;} //如果excel
                $data['title'] = $v[0];
                $data['contacts'] = $v[1];
                $data['email'] = $v[2];
                $data['mobile'] = $v[3];
                $data['tel'] = $v[4];
                $data['faxes'] = $v[5];
                $data['qq'] = $v[6];
                $data['address'] = $v[7];
                $data['type_id'] = $v[8];
                $data['create_time'] = time();
                $data['is_excel'] = 1;
                $merchant->addData($data);//将数据插入到数据库中
            }
        }catch (\Exception $e){
            $this->error($e->getMessage());
        }
        $this->success('导入成功',U('Merchants/selectMerchant'));
    }
}
  • 注意的坑,foreach里面key对应的是exicel表格的一列,不要对错了,空值也需要用空列来代替的!

本文连接:http://www.phpbloger.com/article/18.html 文章都为原创,转载请注明出处!

相关文章