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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
php 中文处理函数集合
Aug 27 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
PHP写日志的实现方法
Nov 05 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 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
php代码优化及php相关问题总结
2006/10/09 PHP
追求程序速度,而不是编程的速度
2008/04/23 PHP
浅析php学习的路线图
2013/07/10 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python批量图片处理简单示例
2019/08/06 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
自我鉴定书范文
2013/10/02 职场文书
大学毕业登记表自我鉴定
2013/10/09 职场文书
村官个人总结范文
2015/03/03 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL