thinkphp5.1 导入Excel 插入数据库
作者:广州小程序开发 时间:2018-07-25 23:13
thinkphp5.1导入Excel ,将下载的PHPExcel放到 vendor目录 这里phpexcel可以通过明名空间引入 ,这里我就
直接vendor include_once了
前端代码
<form class="layui-form layui-form-pane" action="daoru" enctype="multipart/form-data" method="post" onsubmit="return sb1();">
<div class="layui-form-item">
<label class="layui-form-label">所属用户组</label>
<div class="layui-input-4">
<select name="tid" lay-verify="required">
<option value="">请选择用户组</option>
{volist name="quest_type" id="vo"}
<option value="{$vo.id}">{$vo.quest_type_name}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文件</label>
<div class="layui-input-block">
<input id="adBtn1" name="file" type="file" style="height:55px;width:150px;"/>仅允许导入“xls”或“xlsx”格式文件!<br/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="submit" class="layui-btn">提交</button>
<a href="{:url('index')}" class="layui-btn layui-btn-primary">{:lang('back')}</a>
</div>
</div>
</form>
thinkphp后台接收代码
public function daoru(){
$tid = input('post.tid');
$file = request()->file('file');
$info = $file->validate(['ext' => 'xlsx,xls'])->move('uploads');
//数据为空返回错误
if(empty($info)){
$output['status'] = false;
$output['info'] = '导入数据失败~';
var_dump($output);
}
//获取文件名
$exclePath = $info->getSaveName();
//var_dump($exclePath);die;
//上传文件的地址
$filename = $_SERVER['DOCUMENT_ROOT']. '/uploads/' . $exclePath;
// var_dump($filename);die;
//判断截取文件
$extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );
include_once '/目录/vendor/PHPExcel/Classes/PHPExcel.php';
//区分上传文件格式
if($extension == 'xlsx') {
//引入PHPExcel类
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
// var_dump($objReader);die;
$objPHPExcel = $objReader->load($filename, $encode = 'utf-8');
}else if($extension == 'xls'){
$objReader =\PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($filename, $encode = 'utf-8');
}
$excel_array = $objPHPExcel->getsheet(0)->toArray(); //转换为数组格式
array_shift($excel_array);
array_shift($excel_array);
$res = [];
foreach($excel_array as $k=>$v) {
$res[$k]['quiz'] = $v[1];
$res[$k]['options'] = $v[2];
$res[$k]['answer'] = $v[3];
$res[$k]['desdescription'] = $v[4];
$res[$k]['type'] = $v[5];
$res[$k]['tid'] = $tid;
}
// dump($res);
// exit;
db('questions')->insertAll($res); //批量插入数据
echo '导入数据成功~';
}
由于thinkphp5.1已经去掉了vendor方法 ,所以我这里直接用include_once方法引入Excel
本来来源:广州山水居科技 ,专注小程序定制开发,品牌网站建设
上一篇:mysql 存储过程
下一篇:thinkphp5 - 对接人脸识别对别接口