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者的疑难问答(2)
Oct 09 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP实现的浏览器检查类
Apr 11 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 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
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
JS原型链怎么理解
2016/06/27 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
js实现轮播图特效
2020/05/28 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
Python表示矩阵的方法分析
2017/05/26 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
python多线程使用方法实例详解
2019/12/30 Python
基于python实现复制文件并重命名
2020/09/16 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
Shell编程面试题
2016/05/29 面试题
Ruby如何创建一个线程
2013/03/10 面试题
大学生实习证明范本
2014/01/15 职场文书
营销学习心得体会
2014/09/12 职场文书
祝寿主持词
2015/07/02 职场文书
高考升学宴主持词
2019/06/21 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
redis 存储对象的方法对比分析
2021/08/02 Redis
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL