• 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 ThinkUpload();
            //设置附件上传大小
            $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格式读取会报错,其他都没问题。

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

  • 相关阅读:
    死锁分析-(DML+DDL触发Server层死锁)
    archery 1.80推送工单到飞书webhook失败解决方案
    mysql执行计划 Select tables optimized away
    apparmor mysql_Ubuntu 上更改 MySQL 数据库数据存储目录
    查看docker容器的tcp连接(转)
    Mongo副本集搭建方式
    数据库字段命名方法
    C# DataGridview控件自动下拉到最后一行
    C# datagridview绑定List<string>显示的是数据长度
    DataGridView 清空数据
  • 原文地址:https://www.cnblogs.com/yuanshen/p/13203849.html
Copyright © 2020-2023  润新知