TP5.1execl导入数据

本文介绍了一个基于ThinkPHP 5.1框架的控制器函数,用于导入包含二维码信息的Excel文件。该函数首先验证会话密钥,然后接收上传的文件,使用PHPExcel库解析Excel内容,并将数据存储到数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//控制器代码
public function import_qrcode(Request $request){
        $getData = $request->param();
        if(!isset($getData['session_key']) || !Cache::get($getData['session_key'])['id']){
            $json = json(['status'=>self::NO,'msg'=>$this->error[0],'data'=>[]]);
        }else{
            $config = [
                'ext' => 'xlsx'
            ];
            $file = $this->request->file('file');
            $info = $file->validate($config)->move('./uploads');
            if ($info) {
                $fileName = $info->getSaveName();
                $filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.$fileName;
                $data = import_excel($filePath);
                array_shift($data);
                $arr = [];
                $list = array();
                foreach ($data as $k => $v) {
                    $arr['sn'] = $v[0];
                    $arr['key'] = $v[1];
                    $arr['value'] = $v[2];
                    $arr['s_id'] = $getData['s_id'];
                    $arr['a_id'] = $getData['a_id'];
                    $arr['stoptime'] = $getData['stoptime'];
                    $arr['ctime'] = time();
                    $i = $arr['sn'] ^ $arr['key'];
                    if($i == $arr['value']){
                        $f = true;
                        foreach ($list as $vs) {
                            if ($vs['value'] == $arr['value']) {
                                $f = false;
                                break;
                            }
                        }
                        if ($f == true) {
                            $list[] = $arr;
                        }
                    }
                }
                if (file_exists($filePath)) {
                    unset($info);
                    unlink($filePath);  //删除文件
                }
                if (empty($list)) {
                    $json =  json(['status' => self::NO, 'msg' => $this->error[13]]);
                }else{
                    $bool = $this->model->add_all($list);
                    if($bool){
                        $json = json(['status'=>self::YES,'msg'=>$this->error[11]]);
                    }else{
                        $json = json(['status'=>self::NO,'msg'=>$this->error[12]]);
                    }
                }
            }
        }
        return $json;
    }
/**
 * 导入excel文件
 * @param  string $file excel文件路径
 * @return array        excel文件内容数组
 */
function import_excel($file){
    ini_set('max_execution_time', '0');
    // Vendor('PHPExcel.PHPExcel');
    require'../extend/PHPExcel/PHPExcel.php';
    try{
        $objReader = new \PHPExcel_Reader_Excel2007();//注意和导出的类不一样哦
    }catch (\Exception $e){
        $this->error($e->getMessage());
    }
    $objPHPExcel = $objReader->load($file); 
    $sheet = $objPHPExcel->getSheet(0); 
    // 取得总行数 
    $highestRow = $sheet->getHighestRow();     
    // 取得总列数      
    $highestColumn = $sheet->getHighestColumn(); 
    //循环读取excel文件,读取一条,插入一条
    $data=array();
    //从第一行开始读取数据
    for($j=0;$j<=$highestRow;$j++){
        //从A列读取数据
        for($k='A';$k<=$highestColumn;$k++){
            // 读取单元格
            $data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
        } 
    }  
    return $data;
}

导入核心文件,tp5.1不支持之前的vendor和import,使用php的内置require导入就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩淼燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值