tp5 (layui )excel導入

1、首先安裝composer ,然後用composer安裝phpexcel

其次 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代碼,方法前面直接use就可以

use PHPExcel;

/**
     * excel導入網點
     */
    public function  insert(){
        if(request() -> isPost())
        {
            
            $objPHPExcel =new \PHPExcel();
            //獲取表單上傳文件
            $file = request()->file('file');
            $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public');  //上傳驗證後綴名,以及上傳之後移動的地址  E:\wamp\www\bick\public
            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("parking")->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();
            }
        }
        
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章