ThinkPHP导入excel表获取数据

来源:互联网 发布:zeppelin软件下载 编辑:程序博客网 时间:2024/04/28 05:54

首先需要到PHPExcel官网下载插件:http://phpexcel.codeplex.com/

然后我将插件存放在 ThinkPHP\Library\Vendor\Classes 中 


 public function testExcel($filename, $exts){

        //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
        vendor('Classes.PHPExcel');
        //创建PHPExcel对象,注意,不能少了\
        $PHPExcel=new \PHPExcel();
        //如果excel文件后缀名为.xls,导入这个类
        if($exts == 'xls'){
            vendor('Classes.PHPExcel.Reader.Excel5');
            $PHPReader=new \PHPExcel_Reader_Excel5();
        }else if($exts == 'xlsx'){
            vendor('Classes.PHPExcel.Reader.Excel2007');
            $PHPReader=new \PHPExcel_Reader_Excel2007();
        }


        $data=array();
        $data_sum=array();


        //dump($PHPReader);exit();
        //载入文件

        $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;

                    //读取到的数据,保存到数组$arr中,$cell获取了每个单元格的内容,然后再根据需要对数据进行拼装

                    $cell =$currentSheet->getCell($address)->getValue();

        }
        $this->save_import($data_sum);
    }


    public function uploadFile(){
        header("Content-Type:text/html;charset=utf-8");
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     3145728 ;// 设置附件上传大小
        $upload->exts      =     array('xls', 'xlsx');// 设置附件上传类
        $upload->savePath  =      '/'; // 设置附件上传目录
        //dump($_FILES);exit();
        // 上传文件
        $info   =   $upload->uploadOne($_FILES['excelData']);
        //dump($info);
        //exit();
        $filename = 'E:/tt/Uploads'.$info['savepath'].$info['savename'];
        $exts = $info['ext'];
        //dump($filename);exit;
        if(!$info) {// 上传错误提示错误信息
            $this->error($upload->getError());
        }else{// 上传成功调用导入的方法
            $this->testExcel($filename, $exts);
        }
    }
    //时间转换类
    public function GetData($val){
        $n = intval(($val - 25569) * 3600 * 24); //转换成1970年以来的秒数
        $gregorian=gmdate('Y-m-d H:i:s', $n);//格式化时间
        return $gregorian;
    }
0 0