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 相关文章推荐
编译问题
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
php封装的mysqli类完整实例
Oct 18 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
PHP反射学习入门示例
Jun 14 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
PHP调用Webservice实例代码
2011/07/29 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
js document.write()使用介绍
2014/02/21 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
django 创建过滤器的实例详解
2017/08/14 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
python中with用法讲解
2020/02/07 Python
python 回溯法模板详解
2020/02/26 Python
Python socket处理client连接过程解析
2020/03/18 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
物流创业计划书
2014/02/01 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
总结Python使用过程中的bug
2021/06/18 Python
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
对象析构函数__del__在Python中何时使用
2022/03/22 Python