cmf5 excel 导入

本文介绍了一种使用PHPExcel库从Excel文件中读取数据并将其转换为数组的方法,随后将数据解析并插入到数据库中,包括对不同类型的Excel文件进行处理,确保数据正确导入。

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

	public function excel()
	{
		vendor("PHPExcel.Classes.PHPExcel");
		vendor('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
		vendor('PHPExcel.Classes.PHPExcel.Reader.Excel5');

        $file_url = input('file_url');
        $file_name = input('file_name');//文件名
        $file_url = './upload/'.$file_url;//文件url
        $extension = cmf_get_file_extension($file_name);//文件扩展名

        if(empty($file_url)){
            $this->error('请先上传excel!');
        }

        if($extension == 'xlsx'){
            $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
            $objPHPExcel = $objReader->load($file_url, $encode = 'utf-8');  //加载文件内容,编码utf-8
        }else if($extension == 'xls'){
            $objReader =\PHPExcel_IOFactory::createReader('Excel5');
            $objPHPExcel = $objReader->load($file_url, $encode = 'utf-8');  //加载文件内容,编码utf-8
        }else{
            $this->error('请上传Excel格式的文件!','');
        }

        $excel_array=$objPHPExcel->getsheet(0)->toArray();   //转换为数组格式
        array_shift($excel_array);  //删除第一个数组(标题);
        $data = [];
        
        $categorys = Db::name('portal_category')->select();
        foreach($excel_array as $k=>$v) {
            $data[$k]['post_title'] = $v[0]; // 手机号

            for( $i=0; $i<strlen($v[0]); $i++ ){
                $data[$k]['tel_'.$i] = substr($v[0], $i, 1);
            }
            foreach ($categorys as $key => $value) {
                if ($value['name'] == $v[1]) {
                    $data[$k]['category_id'] = $value['id']; // 分类
                }
            }
            if ($v[2]=='普通') {
                $data[$k]['card_type'] = 2; // 普通 
            }elseif($v[2]=='靓号'){
                $data[$k]['card_type'] = 1; // 靓号
            }
            
            $data[$k]['post_money'] = $v[3]; // 价格
            $data[$k]['post_ascription'] = $v[4]; //  归属地
            $data[$k]['post_operators'] = $v[5]; //  运营商
            $data[$k]['post_content'] = $v[6]; //  详情
            $data[$k]['create_time'] = time(); // 创建时间
            $data[$k]['update_time'] = time(); // 更新时间
            $data[$k]['published_time'] = time(); // 发布时间
            $data[$k]['user_id'] = cmf_get_current_admin_id(); // 用户id

            $result = Db::name('portal_post')->where(['post_title' => $v[0]])->find();
           
            if ($result) {
                $rs = Db::name('portal_post')->where(['id'=>$result['id']])->update($data[$k]);//如果已有这条数据就更新这条数据
            }else{
                $rs = Db::name('portal_post')->insert($data[$k]);//如果为空就添加这条数据 
            }

        }
        // echo "<pre/>";
        // print_r($data);die;
        // Db::name('portal_post')->insertAll($data)
        if($rs){
            unlink($file_url);//这里是删除上传后的文件
            $this->success('导入数据成功!');
        } else {
            $this->error('导入数据失败!');
        }

	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值