thinkphp5、tp5中excel表格的导入数据库的实现示例

浏览:9765 发布日期:2018/08/20 分类:功能实现
tp5中导入excel的示例
日常生活中,表格的导入很多!每次做导入的时候还需要百度一下,很麻烦!

这次稍微总结下方法吧!


本方法适用tp5.0框架

适用的方法也简单!希望对大家能有点帮助吧!

由于我这次本机的composer安装后需要重启,但是我电脑上的项目又特别赶时间,算了,还是老土办法吧!


下面开始上教程

1:下载PHPexcel包

下载地址:https://github.com/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 excel2007 for 2007 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();
}
APP_PATH."myclass/PHPExcel/PHPExcel/Reader/Excel5.php";如果报错试试[/code][code][/code][code]其他报错可以参考

https://www.cnblogs.com/cqingt/p/5338023.html


代码下载地址【包含控制器文件】:

链接:https://pan.baidu.com/s/1Rvw4iSnM17NHEOA_CSS1ZA 密码:059h

本文由米醋儿网首发!转载请注明出处
http://micuer.com/index.php?m=index&a=read&id=313
原文链接
评论( 相关
后面还有条评论,点击查看>>