zoukankan      html  css  js  c++  java
  • tp5 (layui )excel导入

    1.composer安装PHPExcel

    下载安装composer

    其次 cmd切换到项目根目录 运行命令:composer require phpoffice/phpexcel

    注意:

            1.运行可能会报错OpenSSL之类的 去php.ini中开启extension=php_openssl.dll扩展,去掉分号

            2.还有可能出现 找不到匹配的包的错误,这是因为我本地用的phpstudy的nts版本,这个版本比较特殊同时支持apache和nginx,只是本地虚拟环境开发测试用的PHP版本,所以匹配不到,应该切换正常版本在运行命令安装

    2.前端代码

               <div class="layui-form-item" >
                    <label class="layui-form-label">导入专线</label>
                    <div class="layui-input-inline">
                        <div class="layui-upload">
                            <button type="button" name="myfile" class="layui-btn" id="myfile"><i class="layui-icon">�</i>上传文件</button>
                        </div>
                    </div>
                </div>
    <script type="text/javascript">
        layui.use(['form','upload'],function(){
    
            var form=layui.form;
            var upload=layui.upload;
    
            upload.render({ //允许上传的文件后缀
                elem: '#myfile'
                ,url: "{:url('Logisticscompany/inserline')}"
                ,accept: 'file' //普通文件
                ,exts: 'xls|excel|xlsx' //只允许上传压缩文件
                ,done: function(res){
                    if(res.code==1){
                        layer.msg('上传成功,已解析数据',{icon:6});
                        location.href="{:url('Logisticscompany/lists')}";
                    }else{
                        layer.msg('解析失败',{icon:5});
                    }
                }
            });
    
            form.on('submit(formsub)',function(data){
                layer.msg('导入数据具体详情未协商确认,待确认后处理');
                return false;
            })
    
    
        })
    
    </script>

    3.controller

        /**
         * excel导入网点
         */
        public function  insert(){
            if(request() -> isPost())
            {
                vendor("PHPExcel.PHPExcel"); //方法一
                $objPHPExcel =new PHPExcel();
                //获取表单上传文件
                $file = request()->file('file');
                $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public');  //上传验证后缀名,以及上传之后移动的地址  E:wampwwwickpublic
                if($info)
                {
                    $exclePath = $info->getSaveName();  //获取文件名
                    $file_name = ROOT_PATH . 'public' . DS . $exclePath;//上传文件的地址
    
                    $file_types = explode ( ".", $_FILES ['file'] ['name'] );
                    $file_type = $file_types [count ( $file_types ) - 1];
                    if($file_type=='xls'){
                        $objReader =PHPExcel_IOFactory::createReader("Excel5");
                    }
                    else if($file_type=='xlsx'){
                        $objReader =PHPExcel_IOFactory::createReader("Excel2007");
                    }
    
                    $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
                    $excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式
                    array_shift($excel_array);  //删除第一个数组(标题);
                    $data = [];
                    $i=0;
                    foreach($excel_array as $k=>$v) {
                        $data[$k]['viewName'] = $v[0];
                        $data[$k]['cityId'] = $v[1];
                        $data[$k]['stationAddress'] = $v[2];
                        $data[$k]['linkMan'] = $v[3];
                        $data[$k]['linkPhone'] = $v[4];
                        $data[$k]['longitude'] = $v[5];
                        $data[$k]['latitude'] = $v[6];
                        $data[$k]['userId'] = $v[7];
                        $data[$k]['remark'] = $v[8];
                        $i++;
                    }
                    $re=    Db::name("htt_freightstation")->insertAll($data);
                    if($re){
                        $msg=[
                            'code'=>1,
                            'msg'=>'已获取信息',
                        ];
                        return json_encode($msg);
                    }
                    else{
                        $msg=[
                            'code'=>0,
                            'msg'=>'获取信息失败',
                        ];
                        return json_encode($msg);
                    }
    
                }else
                {
                    echo $file->getError();
                }
            }
            return $this->fetch('lists');
        }
  • 相关阅读:
    I can do more…
    在希望的田野上
    卓越管理培训笔记
    Python 学习小计
    谈谈“直抒己见”
    [更新]关于博客园不支持RSS全文输出的解决方案
    效率生活二三事
    个人阅读解决方案
    Oracle函数sys_connect_by_path 详解
    基础班-模板配置
  • 原文地址:https://www.cnblogs.com/wrld/p/10445525.html
Copyright © 2011-2022 走看看