PHP使用PHPExcel实现批量上传到数据库的方法


Posted in PHP onJune 08, 2017

此例子只使用execel2003的.xls文档,若使用的是其他版本,可以保存格式为“Execel 97-2003 工作簿(*.xls)”即.xls文件类型即可!

功能说明:只能上传Excel2003类型的xls文件,大小不超过5M。可下载例子模板添加数据后即可上传!

前台test.php页面

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<meta charset="utf-8">
<body>
<form enctype="multipart/form-data" action="./Process.php" method="post">
  <table>
    <tr><td align="center" colspan="2"><font style="font-size: 40px; font-family: 华文彩云;" >上传表格</font></td></tr>
    <tr><td>请先<a href="./sample/sample01.xls" rel="external nofollow" >下载excel例子模板</a>编辑后上传文件</td></tr>
 <tr>
    <td>请选择你要上传的文件</td>
    <td><input type="file" name="myfile"></td>
    </tr>
    <tr><td><input type="submit" value="上传文件" /></td></tr>
  </table>
</form>
</body>
</html>

运行结果:

PHP使用PHPExcel实现批量上传到数据库的方法

后台Process.php页面

<?php
header("Content-type:text/html;charset=utf-8");

//链接数据库
$link = @mysql_connect('localhost','root','') or die('连接数据库失败');
mysql_select_db('test',$link);
mysql_query('set names utf8');

function upExecel(){

//判断是否选择了要上传的表格
if (empty($_POST['myfile'])) {
  echo "<script>alert(您未选择表格);history.go(-1);</script>";
}

//获取表格的大小,限制上传表格的大小5M
$file_size = $_FILES['myfile']['size'];
if ($file_size>5*1024*1024) {
echo "<script>alert('上传失败,上传的表格不能超过5M的大小');history.go(-1);</script>";
  exit();
}

//限制上传表格类型
$file_type = $_FILES['myfile']['type'];
//application/vnd.ms-excel 为xls文件类型
if ($file_type!='application/vnd.ms-excel') {
  echo "<script>alert('上传失败,只能上传excel2003的xls格式!');history.go(-1)</script>";
 exit();
}

//判断表格是否上传成功
if (is_uploaded_file($_FILES['myfile']['tmp_name'])) {
  require_once 'PHPExcel.php';
  require_once 'PHPExcel/IOFactory.php';
  require_once 'PHPExcel/Reader/Excel5.php';
  //以上三步加载phpExcel的类

  $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format 
  //接收存在缓存中的excel表格
  $filename = $_FILES['myfile']['tmp_name'];
  $objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
  $sheet = $objPHPExcel->getSheet(0); 
  $highestRow = $sheet->getHighestRow(); // 取得总行数 
  // $highestColumn = $sheet->getHighestColumn(); // 取得总列数
  
  //循环读取excel表格,读取一条,插入一条
  //j表示从哪一行开始读取 从第二行开始读取,因为第一行是标题不保存
  //$a表示列号
  for($j=2;$j<=$highestRow;$j++) 
  {
    $a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//获取A(业主名字)列的值
    $b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//获取B(密码)列的值
    $c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();//获取C(手机号)列的值
    $d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();//获取D(地址)列的值

    //null 为主键id,自增可用null表示自动添加
    $sql = "INSERT INTO house VALUES(null,'$a','$b','$c','$d')";
    // echo "$sql";
    // exit();
    $res = mysql_query($sql);
    if ($res) {
      echo "<script>alert('添加成功!');window.location.href='./test.php';</script>";
      
    }else{
      echo "<script>alert('添加失败!');window.location.href='./test.php';</script>";
      exit();
    }
  }
}
}

//调用
upExecel();
?>

效果为:若未选择要上传的文件,会提示“未选择表格”;若表格文件超过5M,提示;若上传的文件类型不是xls,会提示!

以上这篇PHP使用PHPExcel实现批量上传到数据库的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php Http_Template_IT类库进行模板替换
Mar 19 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
php文件夹的创建与删除方法
Jan 24 PHP
PHP积分兑换接口实例
Feb 09 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP输入流php://input实例讲解
Dec 22 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP设计模式之工厂方法设计模式实例分析
Apr 25 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
PHP 8新特性简介
Aug 18 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 #PHP
PHP简单获取随机数的常用方法小结
Jun 07 #PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 #PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 #PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 #PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 #PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 #PHP
You might like
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
PHP可变函数的使用详解
2013/06/14 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
js表数据排序 sort table data
2009/02/18 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
js分页工具实例
2015/01/28 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
Python3基础之基本运算符概述
2014/08/13 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
django中forms组件的使用与注意
2019/07/08 Python
python 循环数据赋值实例
2019/12/02 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
J2EE中的容器都包括哪些
2013/08/21 面试题
2014年个人思想工作总结
2014/11/27 职场文书
街道社区活动报告
2015/02/05 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
Python打包exe时各种异常处理方案总结
2021/05/18 Python
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python