tp文件上传、表格转数组

tp3和tp5,两个版本的读取表格文件是一样的:

        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.IOFactory");

        //获取文件类型 $file_path是文件的路径
        $inputFileType = \PHPExcel_IOFactory::identify($file_path);
        //根据类型调用不同的读取方法
        if ($inputFileType == 'CSV') {
            $objReader = \PHPExcel_IOFactory::createReader('CSV');
            $objPHPExcel = $objReader->setInputEncoding('GBK')->load($file_path);
        } else {
            $objReader = \PHPExcel_IOFactory::createReader($inputFileType);
            $objPHPExcel = $objReader->load($file_path, $encode = 'utf-8');
        }

        $sheet = $objPHPExcel->getSheet(0);
        //取得总行数
        $highestRow = $sheet->getHighestRow();
        //取得总列数
        $highestColumn = $sheet->getHighestColumn();
        //视情况限制
        if($highestRow>101) {
            returnAjax([],101,'不能超过100条');
        }
        //自定义的数组下标
        $field = ['id','sex','name','phone'];
        //设置取出的表格列
        $cellName = array('A', 'B', 'C', 'D');
        //此处跳过了表头
        for ($i = 2; $i < $highestRow + 1; $i++) {
            $arr = [];
            foreach ($cellName as $key => $value) {
                //读取到数组中,此处对应上面的自定义数组下标
                $arr[$field[$key]] = $objPHPExcel->getActiveSheet()->getCell($value . $i)->getValue();
                //未定义则从0开始
                //$arr[$key] = $objPHPExcel->getActiveSheet()->getCell($value . $i)->getValue();
            }
            if(!empty($arr)){
                $data[] = $arr;
            }
        }

        return $data;

上传文件:

tp3:https://www.kancloud.cn/manual/thinkphp/1876
示例:

        //实例化上传类 upload类默认获取$_FILES
        $upload = new \Think\Upload();
        //设置附件上传大小
        $upload->maxSize = 3145728 ;
        //设置附件上传类型
        $upload->exts = array('xls');
        //设置附件上传根目录
        $upload->rootPath = './upload/';
        //设置附件上传(子)目录
        $upload->savePath = 'date/';
        //上传文件
        $info = $upload->upload();
        //获取路径
        $file_path = $upload->rootPath.$info['file']['savepath'].$info['file']['savename'];

 

tp5:https://www.kancloud.cn/manual/thinkphp5/155159
示例:

        $file = request()->file('file');
        $info = $file->rule('date')->move('./upload');
        // 后缀
        echo $info->getExtension();
        // 路径
        echo $info->getSaveName();
        // 文件名
        echo $info->getFilename();
        $file_path = './upload/'.$info->getSaveName();

上传文件建议去看官方文档,读取文档的注意事项:

iconv('gb2312', 'utf-8', $val)   解析中文乱码

 

 按照上面的读取方式,以上九种情况中,csv格式转xlsx格式读取会报错,其他都没问题。

如果对你有帮助,希望可以点下推荐。

posted @ 2020-06-28 17:01  一剑还  阅读(94)  评论(0编辑  收藏