• thinkphp3.2和phpexcel导入


    先整个最基础的代码,理解了这个,后面的就非常简单了

    $file_name= './Upload/excel/123456.xls';
            import("Org.Util.PHPExcel");
            import("Org.Util.PHPExcel.IOFactory");
            $objReader = PHPExcel_IOFactory::createReader('Excel5');
            $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得总行数
            $highestColumn = $sheet->getHighestColumn(); // 取得总列数
        
            $s = $objPHPExcel->getActiveSheet()->getCell("A2")->getValue();

    再给大家整个一点难度的,先说下思路。
    1.上传excel文件,得到它的地址
    2.写个处理exl的function,即可
    实例代码演示:

    public function upload(){
            $files = $_FILES['exl'];
            
            
            // exl格式,否则重新上传
            if($files['type'] !='application/vnd.ms-excel'){
                $this->error('不是Excel文件,请重新上传');    
            }
            
            // 上传
            $upload = new ThinkUpload();// 实例化上传类
            $upload->maxSize   =     3145728 ;// 设置附件上传大小
            $upload->exts      =     array('xls');// 设置附件上传类型
            $upload->rootPath  =     './Upload/'; // 设置附件上传根目录
            $upload->savePath  =     'excel/'; // 设置附件上传(子)目录
            //$upload->subName   =     array('date', 'Ym');
            $upload->subName   =     '';
            // 上传文件  
            $info   =   $upload->upload();
        
            $file_name =  $upload->rootPath.$info['exl']['savepath'].$info['exl']['savename'];
            $exl = $this->import_exl($file_name);
            
            // 去掉第exl表格中第一行
            unset($exl[0]);
            
            // 清理空数组
            foreach($exl as $k=>$v){
                if(empty($v)){
                    unset($exl[$k]);
                }    
            };
            // 重新排序
            sort($exl);
            
            $count = count($exl);
            // 检测表格导入成功后,是否有数据生成
            if($count<1){
                $this->error('未检测到有效数据');    
            }
            
            // 开始组合数据
            foreach($exl as $k=>$v){
            
                $goods[$k]['goods_sn'] = $v;
                
                // 查询数据库
                $where['goods_sn'] = array('like','%'.$v.'%');
                $res = M('goods')->where($where)->find();
                
                $goods[$k]['goods_name'] = $res['goods_name'];
                $goods[$k]['goods_thumb'] = $res['goods_thumb'];
                if($res){
                    // 是否匹配成功  
                    $goods[$k]['is_match']    = '1';
                    $f += 1;
                }else{
                    // 匹配失败
                    $goods[$k]['is_match']    = '0';
                    $w += 1;
                }
                        
            }
            // 实例化数据
            $this->assign('goods',$goods);
            //print_r($f);
            
            // 统计结果
            $total['count'] = $count;
            $total['success'] = $f;
            $total['error'] = $w;
            $this->assign('total',$total);
            
            // 删除Excel文件
            unlink($file_name);
            $this->display('info');
                
        }
     /* 处理上传exl数据
         * $file_name  文件路径
         */
        public function import_exl($file_name){
            //$file_name= './Upload/excel/123456.xls';
            import("Org.Util.PHPExcel");   // 这里不能漏掉
            import("Org.Util.PHPExcel.IOFactory");
            $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=1;$i<$highestRow+1;$i++){
                $data[] = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();    
            }
            return $data;    
        }

    http://www.thinkphp.cn/code/2124.html

  • 相关阅读:
    CMDB-实例
    linux ( crontab 定时任务命令)
    2014编程之美初赛第一场题解
    单机与分布式OpenVAS在BackTrack上的配置(实验报告)
    Hadoop 2.2.0 在Red Hat Enterprise Linux 6.1 上的分布式配置(VMware虚拟机,1个namenode,2个datanode)
    Red Hat Enterprise Linux 6.1 的 JDK 1.7 安装
    TopCoder SRM 606 Div2 题解
    HDU 1561 The more, The Better (树形DP)
    HDU 2196 Computer (树形DP)
    HDU 1520 Anniversary party (树形DP)
  • 原文地址:https://www.cnblogs.com/wesky/p/5635317.html
Copyright © 2020-2023  润新知