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 相关文章推荐
codeigniter中测试通过的分页类示例
Apr 17 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
Yii2中Restful API原理实例分析
Jul 25 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
php输出文字乱码的解决方法
Oct 04 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
python字符串对其居中显示的方法
2015/07/11 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
实习评语
2013/12/16 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
MySQL常用慢查询分析工具详解
2022/08/14 MySQL