【教程】layui上传Excel并读取

1html部分

上传按钮

<button class="layui-btn layui-btn-sm" lay-submit="" lay-filter="go7" id="go7">上传成绩模板</button>

2js部分

var upload = layui.upload;
   
  //执行实例
  var uploadInst = upload.render({
    elem: '#go7' //绑定元素
    ,url: 'uploadExcel.php' //上传接口
		,accept: "file"
		,exts: 'xls|excel|xlsx'
    ,done: function(res){
      //上传完毕回调
			// console.log(res.data[1][2]);
			
			for(i=1;i<res.data.length;i++){
				$('input[name="txta'+i+'"]').val(res.data[i][2]==null?'':res.data[i][2]);
				$('input[name="txtb'+i+'"]').val(res.data[i][3]==null?'':res.data[i][3]);
				$('input[name="txtc'+i+'"]').val(res.data[i][4]==null?'':res.data[i][4]);
				$('input[name="txtd'+i+'"]').val(res.data[i][5]==null?'':res.data[i][5]);
				$('input[name="txte'+i+'"]').val(res.data[i][6]==null?'':res.data[i][6]);
				$('input[name="txtf'+i+'"]').val(res.data[i][7]==null?'':res.data[i][7]);
				$('input[name="txtg'+i+'"]').val(res.data[i][8]==null?'':res.data[i][8]);
			}
			// console.log($('input[name="txta1"]').val());
			layer.msg('上传成功,请先计算总评,再保存',{time:6000});
    }
    ,error: function(){
      //请求异常回调
			layer.msg("模板格式不正确");
    }
  });

3php部分

uploadExcel.php文件

<?php
addExcel();
//接收前台文件
function addExcel()
{
	//接收前台文件
	$ex = $_FILES['file'];
	//重设置文件名
	$filename = time() . substr($ex['name'], stripos($ex['name'], '.'));
	$path = 'upload/' . $filename;//设置移动路径
	move_uploaded_file($ex['tmp_name'], $path);
	//表用函数方法 返回数组
	$exfn = _readExcel($path); // 读取内容
	upload_file($exfn, $path); // 上传数据 
}

//创建一个读取excel数据,可用于入库
function _readExcel($path)
{
	//引用PHPexcel 类
	include_once('../inc/PHPExcel.php');
	include_once('../inc/PHPExcel/IOFactory.php');//静态类
	$type = 'Excel2007';//设置为Excel5代表支持2003或以下版本,Excel2007代表2007版
	$xlsReader = PHPExcel_IOFactory::createReader($type);
	$xlsReader->setReadDataOnly(true);
	$xlsReader->setLoadSheetsOnly(true);
	$Sheets = $xlsReader->load($path);
	//开始读取上传到服务器中的Excel文件,返回一个二维数组
	$dataArray = $Sheets->getSheet(0)->toArray();
	return $dataArray;
}

//将数据以json格式输出
function upload_file($data, $path)
{
	//global $db;
	$arr = array();
	array_push($arr, $data[0]);
	//删除第一项
	unset($data[0]);
	//$sql = 'insert into media_platform (user,phone,passwd,head,nickname,platform) values (?,?,?,?,?,?)';
	//$stmt = $db->prepare($sql);
	foreach ($data as $v) {
		//$result = $stmt->execute(array($v[0] ? $v[0] : '', $v[1] ? $v[1] : '', $v[2] ? $v[2] : '', $v[3] ? $v[3] : '', $v[4] ? $v[4] : '', $v[6] ? $v[6] : ''));
		// $stmts->execute(array($v[6] ? $v[6] : ''));
		//if (!$result) {
			array_push($arr, $v);
		//}
	}
// 返回json格式
// 	{
// 	  "code": 0
// 	  ,"msg": ""
// 	  ,"data": {
// 		"src": "http://cdn.layui.com/123.jpg"
// 	  }
// 	}
	$result=array("code"=>"0","msg"=>"","data"=>$arr);
	echo json_encode($result);
	unlink($path); // 上传完文件之后删除文件,避免造成垃圾文件的堆积
}

?>

其中,调用了PHPExcel插件,下载地址:

 https://github.com/PHPOffice/PHPExcel

在使用PHPExcel插件是会有一个报错,需要修改 PHPExcel\Reader\Excel2007.php文件,

在首行加入

date_default_timezone_set('PRC');//设置中国时区

参考文章:https://www.ermsg.com/post/10.html

参考文章:https://blog.csdn.net/weixin_43260760/article/details/83021626

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hifhf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值