您的位置:首页 > 编程语言 > PHP开发

TP5+PHPexcel导入xls,xlsx文件读取数据

2018-03-13 00:00 417 查看
首先:在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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: