excel的导入导出功能还是经常能用到的,这里是基于thinkphp5框架搞的一个excel导入功能,使用到了PHPExcel这个类库,提供一个思路,并没有全部代码,了解思路就行,excel表格格式如下
具体代码如下
public function post(){
if($this->request->isPost()){
vendor("PHPExcel.PHPExcel");//导入PHPExcel.php
$excel=$this->request->file("excel");
if($excel == null){
message("请先上传excel",'','error');
}
$path = 'uploads/' ;
$info=$excel->move($path);//文件上传到项目目录
$file_url=$info->getPathName();//这里获取到的是路径及文件名
$file_name = $file_url;//文件名
$extension = cmf_get_file_extension($file_name);//文件扩展名,这个方法自行处理,获取到文件后缀即可
if($extension == 'xlsx'){
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($file_url, $encode = 'utf-8'); //加载文件内容,编码utf-8
}else if($extension == 'xls'){
$objReader =\PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($file_url, $encode = 'utf-8'); //加载文件内容,编码utf-8
}else{
message("请上传Excel格式的文件",'','error');
}
$excel_array=$objPHPExcel->getsheet(0)->toArray(); //转换为数组格式
array_shift($excel_array); //删除第一个数组(标题);
$data = [];
foreach($excel_array as $k=>$v) {
$data[$k]['name'] = $v[0];
$data[$k]['phone'] = $v[1];
$data[$k]['address'] = $v[2];//因为表格只有三列,所有到这里就可以了,如果有多列,则继续往下增加即可
}
unset($info);//释放资源
unlink($file_url);//因为之前使用的是上传的文件进行操作,这里把它删除,看个人情况具体处理
if(Db::name('message')->insertAll($data)){
message("导入成功",'reload','success');
} else {
message("导入失败",'','error');
}
}
return $this->fetch();
}
基本上到这里都是成功了,如果有问题具体看提示进行处理
PHPExcel类库原本想上传到优快云给大家下载的,但是现在资源初始上传就默认要5积分了,还不能修改,有点坑,所以大家还是百度去找一个把,都是一样的,也可以留个邮箱,这边发过去