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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
php缓存技术详细总结
Aug 07 PHP
Yii框架form表单用法实例
Dec 04 PHP
基于ThinkPHP实现批量删除
Dec 18 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
世界收音机发展史
2021/03/01 无线电
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
Python内置模块turtle绘图详解
2017/12/09 Python
TensorFlow损失函数专题详解
2018/04/26 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
什么是python的必选参数
2020/06/21 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
同志主要表现材料
2014/08/21 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
收款委托书
2014/10/14 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
React forwardRef的使用方法及注意点
2021/06/13 Javascript