1.composer installation PHPExcel
Download and install composer
Secondly switch cmd to the project root directory and run the command:
composer require phpoffice/phpexcel
Note :
1. When running OpenSSL, you may get an error. Go to php.ini and open the extension=php_openssl.dll extension and remove the semicolon.
2. It is still possible. There is an error that the matching package cannot be found. This is because I use the nts version of phpstudy locally. This version is special and supports both apache and nginx. It is only the PHP version used for local virtual environment development and testing, so it cannot be matched and should be switched. The normal version is installed by running the command
2. Front-end code
<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:\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("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'); }
The above is the detailed content of TP5 (layui) excel import. For more information, please follow other related articles on the PHP Chinese website!