日常生活中,表格的导入很多!每次做导入的时候还需要百度一下,很麻烦!
这次稍微总结下方法吧!
本方法适用tp5.0框架
适用的方法也简单!希望对大家能有点帮助吧!
由于我这次本机的composer安装后需要重启,但是我电脑上的项目又特别赶时间,算了,还是老土办法吧!
下面开始上教程
1:下载PHPexcel包
下载地址:/PHPOffice/PHPExcel 点击下载zip包就可以了!
2:解压文件并重命名
3:上传到服务器的application目录下,具体如上图所示
4:创建导入的控制器,由于我这里是导入试题,所以我的控制器是exam。php
5:结合layui的上传插件,再控制器中实现数据的插入
/**
* 新建试题
*/
public function add()
{
require_once APP_PATH."myclass/PHPExcel/PHPExcel.php";
require_once APP_PATH."myclass/PHPExcel/PHPExcel/IOFactory.php";
require_once APP_PATH."myclass/PHPExcel/PHPExcel/Reader/Excel5.php";
$file = request()->file('file');
if($file){
$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads/exam');
$filename = $file->getInfo()["name"];
$path = '/public/uploads/exam/'.$info->getSaveName();
$objReader=\PHPExcel_IOFactory::createReader('Excel5');//use excel for format
$objPHPExcel=$objReader->load(".".$path);//$file_url即Excel文件的路径
$sheet=$objPHPExcel->getSheet(0);//获取第一个工作表
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn(); //取得总列数
$data = array();
//循环读取excel文件,读取一条,插入一条
for($j=2;$j<=$highestRow;$j++){
//从第一行开始读取数据
$str='';
for($k='A';$k<=$highestColumn;$k++){ //从A列读取数据
//这种方法简单,但有不妥,以'\\'合并为数组,再分割\为字段值插入到数据库,实测在excel中,如果某单元格的值包含了\\导入的数据会为空
$str.=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';//读取单元格
}
//explode:函数把字符串分割为数组。
$strs=explode("\\",$str);
$d["content"] = $strs[1];
$d["A"] = $strs[2];
$d["B"] = $strs[3];
$d["C"] = $strs[4];
$d["D"] = $strs[5];
$d["answer"] = $strs[6];
$d["add_time"] = time();
array_push($data,$d);
}
$exam["title"] = $filename;
$exam["add_time"] = time();
$exam["question_count"] = count($data);
$exam["every_question_score"] = 100/count($data);
//试题名查重
if(Db::name("exam")->where(["title"=>$filename])->find()){
return json(["code"=>40000,"msg"=>"试卷名重复,请检查是否早已导入"]);
}
$exam_id = Db::name("exam")->insertGetId($exam);//试卷名的完善和导入
foreach ($data as $k=> $v){
$data[$k]["exam_id"] = $exam_id;
}
$res = Db::name("exam_questions")->insertAll($data);
unlink(".".$path); //删除excel文件
if($res){
return json(["code"=>200,"msg"=>"导入成功"]);
}else{
return json(["code"=>40000,"msg"=>"导入失败"]);
}
}
return $this->fetch();
}
大家根据自己创建的文件目录去修改自己引入的excel的包路劲!
require_once APP_PATH."myclass/PHPExcel/PHPExcel/Reader/Excel5.php";如果报错试试
require_once APP_PATH."myclass/PHPExcel/PHPExcel/Reader/Excel.php";
其他报错可以参考
/cqingt/p/5338023.html
代码下载地址【包含控制器文件】:
链接:/s/1Rvw4iSnM17NHEOA_CSS1ZA 密码:059h
本文由米醋儿网首发!转载请注明出处
软件下载链接
点击下载(2积分)
如何下载
积分获取攻略
下载说明:本站软件全部都是由个收集,绝对无毒无公害!如若有侵权或,请联系qq571031767进行删除!
软件1群:209183654 2群:524440238 3群:397053211 4群:684245561