zoukankan      html  css  js  c++  java
  • PHPExcel插件导入excel功能

    1、把excel先导入到服务器

    public function import() {
            require_once ROOT . DS . 'vendor' . DS . 'UploadFile.class.php';  //封装的上传文件类库
            if ($this->request->is(['patch', 'post', 'put'])) {
                $data = $this->request->data;
                        if (!(@$data['import_file'])) {
                                $this->returnError($this->errorCode[202]);
                        }
                    // 实例化类库
                        $upfile = new UploadFile($data['import_file']);
                        $upfile->path = TMP; //保存路径
                        $upfile->typelist =array('xls','xlsx');
                        if($info = $upfile->upload()){  //上传成功
                            $uploadFile = $upfile->path.$upfile->savename;
                          $exts = $upfile->ext;  //后缀名
                       //调用data_import接口,读取excel数据,$uploadFile文件保存的路径+文件名。$exts,文件后缀,$types 根据不同类型区分导入不同的文件
                         $this->data_import($uploadFile, $exts,3,$data['types']);
                       //  pr($upfile);die;
                        } else {
                            $this->returnError($upfile->error);
                        }
            }
        }            

    2、读取excel文件的数据接口

    $uploadFile文件保存的路径+文件名。
    $exts,文件后缀,
    $types 根据不同类型区分导入不同的文件
    public function data_import($filename, $exts = 'xls',$or ,$types=1){
           header("Content-Type:text/html;charset = utf-8"); 
           //导入PHPExcel类库,因为PHPExcel
           require_once ROOT . DS . 'vendor' . DS .'phpexcel'. DS . 'PHPExcel.php';
            //创建PHPExcel对象,注意,不能少了
            $PHPExcel = new PHPExcel();
            //如果excel文件后缀名为.xls,导入这个类
            if ($exts == 'xls') {
               require_once ROOT . DS . 'vendor' . DS .'phpexcel'. DS .'PHPExcel'. DS .'Reader'. DS . 'Excel5.php';
                $PHPReader = new PHPExcel_Reader_Excel5();
            } else if ($exts == 'xlsx') {
               require_once ROOT . DS . 'vendor' . DS .'phpexcel'. DS .'PHPExcel'. DS .'Reader'. DS . 'Excel2007.php';
                $PHPReader = new PHPExcel_Reader_Excel2007();
            }
     
     
            //载入文件
            $PHPExcel = $PHPReader->load($filename);
            //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
            $currentSheet = $PHPExcel->getSheet(0);
            //获取总列数
            $allColumn = $currentSheet->getHighestColumn();
           //获取总行数
            $allRow = $currentSheet->getHighestRow();
            //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
            for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
                //从哪列开始,A表示第一列
                for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
                    //数据坐标
                    $address = $currentColumn . $currentRow;
                    //读取到的数据,保存到数组$data中
                    $cell = $currentSheet->getCell($address)->getValue();
     
                    if ($cell instanceof PHPExcel_RichText) {
                        $cell = $cell->__toString();
                    }
                    $data[$currentRow - 1][$currentColumn] = $cell;
                    //  print_r($cell);
                }
     
            }
            //    pr($data);die;
            if($types==1){  //模板导入
                // 写入数据库操作
                $this->insert_data($data);
            }elseif($types==2){   //资产导入
                // 写入数据库操作
                $this->insert_assets($data);        
            }
            
        }
  • 相关阅读:
    好久没来博客园写博客了
    配置apache apache服务器如何配置多站点
    Discuz对不起,您安装的不是正版应用的解决办法
    解决php deprecated 的问题
    PHP乱码完美解决
    block,inline和inline-block概念和区别(转)
    C# 的各种排序
    设计模式的学习
    一些随笔
    笔记 日常的记录
  • 原文地址:https://www.cnblogs.com/hualingyun/p/15474702.html
Copyright © 2011-2022 走看看