php 导入excel

if($_FILES['files']){
$uploadfile=$_FILES['files'];
$name=$uploadfile['name'];//文件原名
$type=$uploadfile['type'];
$tmp_name=$uploadfile['tmp_name'];
$size=$uploadfile['size'];
$error=$uploadfile['error'];
// $uploadurl='../../../d/uploads/'; //上传路径
$path='./uploads/'; //上传路径
if (!is_dir($path)){//判断目录是否存在
mkdir($path);
}
$max_file_size=2000000; //最大上传限制 2M
if($name){
$info = pathinfo($name);
$ext = $info['extension'];
}
$newname=$path.time().$info['basename'];//自定义名称
//允许上传类型
$allowType=array(
'xls','xlsx'
);
if($size>$max_file_size){$error=2;}
// echo $error;exit;
switch($error){
case 0:
if(!in_array($ext,$allowType)){
$msg = '文件类型错误';
printerror($msg,'',1,0,1);
// echo "<script>alert('文件类型错误');self.location.href='ImportMember.php';</script>";
}else{
move_uploaded_file($tmp_name,$newname);
}
break;
case 1:  
$msg = '文件超过系统限定大小';
printerror($msg,'',1,0,1);
break;
case 2:
$msg = '最大文件不能超过2M';
printerror($msg,'',1,0,1);
break;
case 3:
$msg = '文件只有部分被上传';
printerror($msg,'',1,0,1);
break;
case 4:
$msg = '没有文件被上传';
printerror($msg,'',1,0,1);
break;
case 5:
$msg = '文件上传大小为0';
printerror($msg,'',1,0,1);
break;
default:
$msg = '非法上传';
printerror($msg,'',1,0,1);
break;
}
//查找文件
if(file_exists($newname)){
require_once '../../extend/PHPExcel/PHPExcel.php';
require_once '../../extend/PHPExcel/PHPExcel/IOFactory.php';
if($ext=='xls'){
require_once '../../extend/PHPExcel/PHPExcel/Reader/Excel5.php';// excel 2003
$objReader=PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
}else{
require_once '../../extend/PHPExcel/PHPExcel/Reader/Excel2007.php';// excel 2007
$objReader=PHPExcel_IOFactory::createReader('Excel2007');//use excel2007 for 2007 format
}
// $objPHPExcel=$objReader->load($newname);//$newname即Excel文件的路径
// $objPHPExcel = $objReader->load($newname);//加载文件(这个容易造成httpd崩溃)   
$objPHPExcel = PHPExcel_IOFactory::load($newname);//加载文件
$sheet=$objPHPExcel->getSheet(0);//获取第一个工作表
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn(); //取得总列数
// echo $highestRow;exit;

for($i=3;$i<=$highestRow;$i++){
$username=trim($objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue());
$password=trim($objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue());
$rnd=make_password(20);
$email=trim($objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue());
$registertime = date('Y-m-d H:i:s',time());
$groupid = trim($objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue());
$salt=eReturnMemberSalt();
$userkey=eReturnMemberUserKey();
$checked = 1;
$class_name=trim($objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue());
$truename=trim($objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue());
$gender=trim($objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue());
$phone=trim($objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue());
$address = trim($objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue());
$username=strtolower($username);
$email=strtolower($email);
if($groupid=='学生'){
$groupid = 7;
}elseif($groupid=='老师'){
$groupid = 8;
}
empty($gender) ? $gender = '未知' : $gender = $gender;
empty($groupid)? $groupid = 7 : $groupid = $groupid;
empty($password)?$password=eDoMemberPw(123456,$salt):$password=eDoMemberPw($password,$salt);
if(empty($username)){
$flag = 0;
$msg='第'.($i-2).'条记录出错,用户名不能为空;请重新导入';
break;
}
if(empty($class_name)){
$flag = 0;
$msg = '第'.($i-2).'条记录出错,班级不能为空;请重新导入';
break;
}
if(empty($truename)){
$flag = 0;
$msg = '第'.($i-2).'条记录出错,真实姓名不能为空;请重新导入';
break;
}

$num=$empire->gettotal("select count(*) as total from ".eReturnMemberTable()." where ".egetmf('username')."='$username' limit 1");
if($num){
$flag = 0;
$msg='第'.($i-2)."条记录出错,该用户已存在;请重新导入";
break;
}
if(!empty($email)){
if(!chemail($email))
{
$flag = 0;
$msg='第'.($i-2)."条记录出错,邮箱格式不正确; 请重新导入";
break;
}
if($pr['regemailonly'])
{
$num=$empire->gettotal("select count(*) as total from ".eReturnMemberTable()." where ".egetmf('email')."='$email' limit 1");
if($num)
{
$flag = 0;
$msg='第'.($i-2)."条记录出错,邮箱已注册; 请重新导入";
break;
}
}
}
// else{
// $flag = 0;
// $msg='第'.($i-1)."条记录出错,邮箱不能为空; 请重新导入";
// break;
// }
// echo $member_r[0];exit;
$sql=$empire->query("insert into ".eReturnMemberTable()."(".eReturnInsertMemberF('username,password,rnd,email,registertime,groupid,userfen,userdate,money,zgroupid,havemsg,checked,salt,userkey').") values('$username','$password','$rnd','$email','$registertime','$groupid','$public_r[reggetfen]','0','0','0','0','$checked','$salt','$userkey');");
if($sql){//插入成功
$userid=$empire->lastid();
$ins_id[] = $userid;
$addr=$empire->fetch1("select * from {$dbtbpre}enewsmemberadd where userid='$userid'");
if(!$addr){
$spacestyleid = $groupid;
$sql1=$empire->query("insert into {$dbtbpre}enewsmemberadd(userid,truename,spacestyleid,regip,lasttime,lastip,loginnum,regipport,lastipport,class_name".$member_r[0].") values('$userid','$truename','$spacestyleid','$regip','$lasttime','$regip','1','$regipport','$regipport','$class_name'".$member_r[1].");");
if($sql1){
$flag = 1;
$msg = '导入成功';
$gotourl = 'ListMember.php';
$insids = implode(',',$ins_id);
// printerror($msg,'ListMember.php',1,0,1);
}else{
$flag = 0;
$msg = '导入失败';
$gotourl = 'ImportMember.php';
$insids = implode(',',$ins_id);
break;
}
}
}
}
@unlink($newname);
if($flag==1){
printerror($msg,$gotourl,1,0,1);
}else{
if($insids){
$sql2 = "delete from {$dbtbpre}enewsmember where userid in ($insids)";
$res1 = $empire->query($sql2);
$sql3 = "delete from {$dbtbpre}enewsmemberadd where userid in ($insids)";
$res2 = $empire->query($sql3);
}
printerror($msg,$gotourl,1,0,1);
}
}else{
echo "<script>alert('请选择要导入的文件')</script>";
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】逻辑回归怎么做多分类

目录 一、逻辑回归模型介绍 1.1 逻辑回归模型简介 1.2 逻辑回归二分类模型 1.3 逻辑回归多分类模型 二、如何实现逻辑回归二分类 2.1 逻辑回归二分类例子 2.2 逻辑回归二分类实现代码 三、如何实现一个逻辑回归多分类 3.1 逻辑回归多分类问题 3.1 逻辑回归多分类的代…

Leetcode—198.打家劫舍【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—198.打家劫舍 算法思想 具体思路 首先&#xff0c;我们从上面的题目描述中抽象出题意。 ● 从一个非负整数数组中找到一个子序列&#xff0c;并且该子序列的和最大 ● 子序列中每个数的位置不能够相邻。举例来讲&…

Leetcode—1466.重新规划路线【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—1466.重新规划路线 算法思想 实现代码 class Solution { public:int minReorder(int n, vector<vector<int>>& connections) {vector<pair<int, int>> g[n];for(auto e: connections) {in…

JS的变量提升ES6基础

JS的变量提升&ES6基础 变量var关键字var声明作用域实例一实例二多个变量 变量提升 let关键字暂时性死区全局声明for循环中使用let const关键字 变量 ECMAScript变量时松散类型的&#xff0c;意思是变量可以用于保存任何类型的数据。 声明变量&#xff1a;var 、const、let …

阶梯电价1_分支结构 C语言xdoj27

题目&#xff1a;阶梯电价计费 类别&#xff1a;流程控制 时间限制&#xff1a;2S 内存限制&#xff1a;10000Kb 问题描述&#xff1a; 电价分三个档次&#xff0c;[0,110]度电&#xff0c;每度电0.5元&#xff1b;(110,210]度电&#xff0c;超出110部分每度电0.55元&…

git-vscode

git-vscode ctrlshiftp 创建分支 create branch 直接切到新的分支了 切换分支 直接点左下角自己选择 vscode中配置仓库 https://blog.csdn.net/zora_55/article/details/129709251 推送tag tag作用就是在 Git 中&#xff0c;标记存储库历史记录中特定提交的一种方式。t…

【Linux】无法使用 screenfetch 查看系统信息,报错 command not found: screenfetch

问题描述 screenfetch是一个命令行工具&#xff0c;用于在终端显示系统的硬件和软件信息。它会收集各种系统和环境的信息&#xff0c;并以彩色 ASCII 艺术的形式在终端中展示出来。 当你在终端中运行screenfetch命令时&#xff0c;它会检测你的操作系统、主机名、内核版本、C…

IntelliJ IDEA 2023.3发布,更新AI助手,运行相当流畅,再也不卡了

这两天Jetbrains来了一波大的更新&#xff0c;推出了2023.3正式版&#xff0c;均做了不少优化&#xff0c;最重要的是大家期待已久的Ai Assistant插件本次更新也正式推出&#xff0c;助力大家提高Coding效率。但是很遗憾&#xff0c;目前我们无法使用&#xff0c;因为该插件底层…

HTTPS加密协议:保护你的网络安全

引言&#xff1a; 随着互联网的普及&#xff0c;我们越来越依赖网络来获取信息、进行交流和完成各种任务。然而&#xff0c;网络的开放性和便利性也带来了一些安全隐患&#xff0c;如数据泄露、身份盗窃等。为了保护用户的隐私和安全&#xff0c;https加密协议应运而生。本文将…

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…

计算机视觉-03-使用U-Net实现肾脏CT分割(包含数据和代码)

文章目录 0. 数据获取1. 介绍1.1 简介1.2 任务介绍1.3 数据集介绍1.3.1 介绍1.3.2 数据预处理建议 1.4 代码实现参考1.5 训练过程1.5.1 参数设置1.5.2 可视化1.5.3 结果分析 0. 数据获取 关注公众号&#xff1a;『AI学习星球』 回复&#xff1a;肾脏CT分割 即可获取数据下载。…

华为、华三、锐捷、思科巡检命令大全

思科、华为、华三、锐捷网络设备巡检命令 思科01 思科交换机巡检命令02 思科交换机基本配置命令 华三华为锐捷 思科 01 思科交换机巡检命令 show interface stats&#xff1a;查看交换机所有接口当前接口流量show running-config&#xff1a;查看当前设备配置show version&am…

高精度时钟芯片SD2405

概要 SD2405是一款非常优秀的RTC解决方案&#xff0c;为了能让用户在Arduino上有一款方便易用的时钟模块。该模块是一款内置晶振&#xff0c;支持IIC串行接口的高精度时钟模块&#xff1b;内置一次性工业级电池&#xff0c;可保证外部掉电的情况下&#xff0c;可以继续工作5~8…

实例分割 Mask-RCNN

参考文章 使用LabelMe标注目标检测数据集并转换为COCO2017格式_labelme转coco-CSDN博客 数据集选择 voc 这次不选择voc&#xff0c;因为文件组织太难了 voc2012文件夹组织 COCO COCO介绍 MC COCO2017年主要包含以下四个任务&#xff1a;目标检测与分割、图像描述、人体关…

【扩散模型】深入理解图像的表示原理:从像素到张量

【扩散模型】深入理解图像的表示原理&#xff1a;从像素到张量 在深度学习中&#xff0c;图像是重要的数据源之一&#xff0c;而图像的表示方式对于算法的理解和处理至关重要。本文将带你深入探讨图像的底层表示原理&#xff0c;从像素到张量&#xff0c;让你对图像表示有更清…

KP 2sv Authenticator一款免费处理亚马逊两步验证码的软件

KP 2sv Authenticator 被誉为一款免费而强大的亚马逊两步验证软件&#xff0c;操作简便轻松。 软件使用方法极为简单&#xff0c;用户只需直接输入身份验证应用程序生成的代码&#xff0c;即可迅速生成随机验证码&#xff0c;帮助用户顺利完成亚马逊的两步验证流程。这款小软件…

有了安卓模拟器,就能在Windows 10或11上像使用安卓操作系统一样使用安卓

你可以使用Android模拟器在Windows 11或Windows 10中运行Android应用程序。如果你喜欢的应用程序只在手机上运行,但你想在电脑上使用,这些模拟器会很有用。 BlueStacks 与整个操作系统模拟器不同,BlueStacks只在Windows上模拟Android应用程序。它真的很容易使用,所以你不需…

香港云服务器:全面介绍与使用场景分析

这几年基于国内互联网技术的发展&#xff0c;各类海外贸易的兴起&#xff0c;很多网站都启用了海外云服务。这其中&#xff0c;香港的 IDC 市场异常火爆。也不奇怪&#xff0c;就目前来看&#xff0c;国内大多数网站的访问用户在国内外均有涉及&#xff0c;而香港云服务器恰好满…

Python开源项目月排行 2023年10月

Python 趋势月报&#xff0c;按月浏览往期 GitHub,Gitee 等最热门的Python开源项目&#xff0c;入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后&#xff0c;都是当前月份内相对热门的项目。 入选公式&#xff1d;70%GitHub Trending20%Gitee10%其他 …

openmmlab加载自训练权重

openmmlab加载自训练权重 在openmmlab中要加载自训练的模型权重&#xff0c;用于自己其他数据集训练的预训练模型。只需要在config文件中添加模型初始化。 在config.py文件中的model配置中初始化。 model dict(typeTopdownPoseEstimator,data_preprocessordict(),backboned…