您的位置:首页 > 编程语言 > PHP开发

ThinkPHP导入excel表获取数据

2016-06-29 11:08 423 查看
首先需要到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;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: