首先:在extend里面引入PHPexcel文件,直接根目录导入进去
html创建上传按钮
<form class="layui-form" method="post" action="">
<div class="layui-form-item" >
<label class="layui-form-label">上传excel</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>
<div class="layui-form-item" style="padding-left: 35%;">
<div class="layui-input-inline" >
<button class="layui-btn" lay-submit lay-filter="formsub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<script type="text/javascript">
layui.use(['form','upload'],function(){
var form=layui.form;
var upload=layui.upload;
upload.render({ //允许上传的文件后缀
elem: '#myfile'
,url: "{:url('sale/do_upload')}"
,accept: 'file' //普通文件
,exts: 'xls|excel|xlsx' //只允许上传压缩文件
,done: function(res){
if(res.code==1){
layer.msg('上传成功,已解析数据',{icon:6});
}else{
layer.msg('解析失败',{icon:5});
}
}
});
form.on('submit(formsub)',function(data){
layer.msg('导入数据具体详情未协商确认,待确认后处理');
return false;
})
})
</script>
在上传后的sale/do_upload中去进行解析上传的excel
public function do_upload(){
//引入文件
\think\Loader::import('PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel();
//获取表单上传文件
$file = request()->file('file');
$info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public' . DS . 'uploads');
//数据为空返回错误
if(empty($info)){
$output['status'] = false;
$output['info'] = '导入数据失败~';
$this->ajaxReturn($output);
}
//获取文件名
$exclePath = $info->getSaveName();
//上传文件的地址
$filename = ROOT_PATH . 'public' . DS . 'uploads'.DS . $exclePath;
$extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );
\think\Loader::import('PHPExcel.IOFactory.PHPExcel_IOFactory');
if ($extension =='xlsx') {
$objReader = new \PHPExcel_Reader_Excel2007();
$objExcel = $objReader ->load($filename);
} else if ($extension =='xls') {
$objReader = new \PHPExcel_Reader_Excel5();
$objExcel = $objReader->load($filename);
}
$excel_array=$objExcel->getsheet(0)->toArray(); //转换为数组格式
array_shift($excel_array); //删除第一个数组(标题);
array_shift($excel_array); //删除th
$data=[];
foreach ($excel_array as $k=>$v){
$data[$k]["danhao"]=$v[0];//单号
$data[$k]["type_name"]=$v[1];//类型名称
$data[$k]["name"]=$v[2];
$data[$k]["number"]=$v[3];
$data[$k]["price"]=$v[4];
$data[$k]["danwei"]=$v[0];
$data[$k]["create_user"]=$v[5];
$data[$k]["create_time"]=$v[6];
$data[$k]["remark"]=$v[7];
}
$msg=[
'code'=>1,
'msg'=>'已获取信息',
];
$msg['data']['src']=$filename;
$msg['data']['data']=$data;
return json_encode($msg);
}