TP5导入数据库

这篇博客介绍如何在ThinkPHP5(TP5)框架下实现通过HTML表单上传Excel文件,并将数据导入到数据库中。文章详细展示了表单代码、控制器接收并处理Excel文件的步骤,包括文件验证、读取内容、转换为数组、存储到数据库的操作。

html页面代码 theme:

<form method="post" action="{:url('Index/savestudentImport')}" class="form-signin" enctype="multipart/form-data" >  
    <div>
        <select name="themeid">
            {volist name="theme" id="v"}
                <option value="{$v.id}">{$v.title}</option>
            {/volist}
        </select>
    </div><br />
    <input name="excel" type="file" class="form-control">  
    <br /><br />
    <button class="btn btn-lg btn-primary btn-block">导入</button>  
</form>  

控制器接收代码:

public function savestudentImport(){  
        //import('phpexcel.PHPExcel', EXTEND_PATH);//方法二  
        vendor("PHPExcel.PHPExcel"); //方法一  
        $objPHPExcel = new \PHPExcel();  
          $themeid=input('post.themeid');//导入数据类型
        //获取表单上传文件  
        $file = request()->file('excel');  
        $info = $file->validate(['size'=>1567800,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');  
        if($info){  
            $exclePath = $info->getSaveName();  //获取文件名  
            $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;   //上传文件的地址  
            $objReader =\PHPExcel_IOFactory::createReader('Excel5');  
            $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8  
            echo "<pre>";  
            $excel_array=$obj_PHPExcel->getsheet(0)->toArray();   //转换为数组格式  
            array_shift($excel_array);  //删除第一个数组(标题);  
            
            $data = [];  
            $i=0;  
            foreach($excel_array as $k=>$v) {  
                
                $data[$k]['title'] = $v[1]; 
                $data[$k]['optiona'] = $v[2];   
                $data[$k]['optionb'] = $v[3];   
                $data[$k]['optionc'] = $v[4];   
                $data[$k]['optiond'] = $v[5];   
                $data[$k]['optione'] = $v[6];   
                $data[$k]['optionf'] = $v[7];   
                $data[$k]['time']    = date('Y-m-d H:i:s',time());
                $data[$k]['themeid'] = $themeid;
                $i++;  
            }  
           $success=Db::name('sleeptopic')->insertAll($data); //批量插入数据  
           //$i=  
           $error=$i-$success;  
            echo "总{$i}条,成功{$success}条,失败{$error}条。";  
           // Db::name('t_station')->insertAll($city); //批量插入数据  
        }else{  
            // 上传失败获取错误信息  
            echo $file->getError();  
        }  
  
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值