thinkphp3.2 phpExcel的导入示例教程

1、首先先把phpexcel的扩展文件放到 ThinkPHP\Library\Vendor目录下

点我下载phpexcel扩展
TP的文件上传我就不说了,话不多说,先上代码

          //判断上传的是否是xlsx文件
          if ($_FILES['xlsx']) {
            $xlsx = self::upload_photo($_FILES['xlsx'], ['xlsx']); // 只有.xlsx 格式的图片才可以 添加,调用upload_photo方法
            if($xlsx){
                $fileModel = new FileModel();
                $path = $xlsx['src']; //获取图像文件url
            }
          }
        vendor('PHPExcel');
      
        $excel = \PHPExcel_IOFactory::load($path);
        
        
        $excel->setActiveSheetIndex(0);
        $sheet0     =$excel->getSheet(0);
        $rows       =$sheet0->getHighestRow();//行数
        $column     =$sheet0->getHighestColumn();//最大列的字母
        $columnNum  =$this->cellLen[$column];//列数
        $content    =array();
        
        for($currentRow = 2;$currentRow<=$rows;$currentRow++){
            //  获取A行记录
            $content['question_content']    = trim((string)$sheet0->getCell('A'.$currentRow)->getValue());
            //  获取B行记录
            $content['answer_option']       = trim((string)$sheet0->getCell('B'.$currentRow)->getValue());
            //  获取C行记录
            $content['question_answer']     = trim((string)$sheet0->getCell('C'.$currentRow)->getValue());
            //  获取D行记录
            $content['question_type']       = trim((string)$sheet0->getCell('D'.$currentRow)->getValue());
            //  获取D行记录,这个在excel中是日期,需要转换才能用
            $content['add_time']            = $this->excelTime(trim((string)$sheet0->getCell('E'.$currentRow)->getValue()));
            //获取到数据,接下来做你想要的操作就好了
        }
        unlink($path);

附上upload_photo方法

    /**
     * 上传文件
     * @param array $file - $_FILES文件h
     * @param string $path
     * @return string
     */
    public function newupload($files,$ext=null) {
        $ymd = date("Ymd");

        $ymd_path = substr($ymd,0,4).'/'.substr($ymd,4,2).'/'.substr($ymd,6,2);
        
        $fileArr = array();
        
        //把多个图的数组转换从array('name'=>array('',''),'type'=>array('',''))为 array(0=>array('name'=>'','type'=>''),1=>array())形式
        if(is_array($files)) {
            foreach($files as $k=>$v) {
                foreach($v as $num=>$vv) {
                    $fileArr[$num][$k] = $vv;
                }
            }
        }else {
            $fileArr = array($files);
        }

        //文件名称
        //unset($files);
        $ret = array();

        foreach($fileArr as $file) {
            if (!$file['name']) {
                continue;
            }
            $file_ext = substr($file['name'],strrpos($file['name'],'.')+1);

            $my_ext = strtolower($file_ext);
            
            //过滤php文件上传
            if($my_ext == 'php'){
                $this->error("php文件不允许上传!");
            }
            
            if(!is_null($ext) && !in_array($my_ext,$ext)){
                continue;
            }
            
            $filename = md5(time() . $file['name'] . rand(1, 93333333)) . "." . $file_ext;
            
            $relative_dir = C('DEFAULT_WORK_FILE_PATH') . '/' . $ymd_path;
            
            if(!is_dir($relative_dir)) {
                mkdir($relative_dir, 0777, true);
            }

            $relative_path = $relative_dir . '/' . $filename;
            
            move_uploaded_file($file['tmp_name'], $relative_path);
    
            $suffixArr = explode('.', $filename);

            $ret[] = array(
                    'src'       => $filename,
                    'path'      => $relative_dir . '/'
            );
        }

        return $ret;
    }
    
    /**
     * 上传单张图片
     * @param array $files
     * @param string $path
     * @return Ambigous 
     */
    public function upload_photo($files,$ext=null) {
        $files = self::newupload($files,$ext);
        return $files[0];
    }

excel日期转换时间方法,请点击我查看

本文为原创文章,转载请注明出处


觉得本文对你有帮助


关注mid米店,持续分享中。。。

你可能感兴趣的:(thinkphp3.2 phpExcel的导入示例教程)