1.php部分(本例thinkphp5.1):

下载PHPExcel了扩展http://phpexcel.codeplex.com/

<?php
namespace app\admin\controller;

// 引入phpExcel
use Env;
use vendor\PHPExcel\PHPExcel;

class Upload
{
//上传Excel 导入数据
public function import(){
include_once(Env::get('root_path').'vendor/PHPExcel/PHPExcel.php');
// $objPHPExcel = new \PHPExcel();
$file = request()->file('file');
$info = $file->validate(['size'=>52428800])->move( '../public/uploads');
if($info){
$ext = $info->getExtension(); //获取文件后缀名
if(!in_array($ext,['xlsx','xls'])){
$msg=['code'=>-1,'msg'=>"文件格式有误"];
}else{
$path = $_SERVER['DOCUMENT_ROOT'].'/uploads/'.str_replace('\\', '/', $info->getSaveName()); //上传文件路径
if (!file_exists($path)) {
$msg['res'] = -1;
$msg['msg'] = "上传文件丢失!" . $file->getError();
}

if ($ext == 'xlsx') {
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($path, 'utf-8');
} elseif ($ext == 'xls') {
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($path, 'utf-8');
}

$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
// $highestColumn = $sheet->getHighestColumn(); // 取得总列数
$i = 0;
$importRows = 0;
$addData = [];
for ($j = 2; $j <= $highestRow; $j++) {
$importRows++;
$realName = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要导入的realName
$phone = (string)$objPHPExcel->getActiveSheet()->getCell("B$j")->getValue(); //需要导入的phone
$company = (string)$objPHPExcel->getActiveSheet()->getCell("C$j")->getValue(); //需要导入的company
$job = (string)$objPHPExcel->getActiveSheet()->getCell("D$j")->getValue(); //需要导入的job
$email = (string)$objPHPExcel->getActiveSheet()->getCell("E$j")->getValue(); //需要导入的email

$addData[] = ['name'=>$realName,'tel'=>$phone,'company'=>$company,'job'=>$job,'email'=>$email];
$i++;
}
halt($addData); //打印数据
//数据写入数据库
$result = model('')->insertAll($addData);
if($result){
$msg = ['code'=>0,'msg'=>'导入数据成功!'];
}else{
$msg = ['code'=>-1,'msg'=>'导入失败,请重试!'];
}
}
}
return $msg;
}
}
 配置路由:
'import'=>'admin/Upload/import',  
2.前端部分:layui传文件
<a class="layui-btn layui-btn-primary import_btn" data-type="import">导入数据</a>   //点击开始上传文件操作
layui.use(['upload'],function(){
  var upload = layui.upload;
  upload.render({
    elem:'.import_btn',
    url:"{:url('admin/import')}",
    accept:'file', //普通文件
    exts:'xls', //允许的文件后缀
    done:function(res){
      //执行导入接口后操作
    }
  });
})

参考链接:https://www.cnblogs.com/52lnamp/p/9237704.html,https://blog.csdn.net/xgs736214763/article/details/78904780(感谢分享)

PHP Excel文件导入数据到数据库的更多相关文章

  1. NodeJs之EXCEL文件导入导出MongoDB数据库数据

    NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...

  2. 十万级百万级数据量的Excel文件导入并写入数据库

    一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...

  3. 批量将制定文件夹下的全部Excel文件导入微软SQL数据库

    以下代码将c:\cs\文件夹下的全部Excle中数据导入到SQL数据库 declare @query vARCHAR(1000) declare @max1 int declare @count1 i ...

  4. Excel文件导入SQL Server数据库

    Excel表格的使用可谓是非常广泛,博主也简单百度了一下Excel的发展. 发展历程: 1982年 Microsoft推出了它的第一款电子制表软件-Multiplan,并在CP/M系统上大 Excel ...

  5. asp.net 从Excel表导入数据到数据库中

    http://www.cnblogs.com/hfzsjz/archive/2010/12/31/1922901.html http://hi.baidu.com/ctguyg/item/ebc857 ...

  6. Excel文件导入SQL Server数据库表

    --office 2003--如果接受数据导入的表已经存在insert into DemoTable select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0 ...

  7. 从Excel表格导入数据到数据库

    数据库:SQL 1.小数据直接粘贴 2.用导入向导 3.用SSIS包 4.用SQL语句 现在详细说一下第4种方法,以.xlsx文件为例 .xlsx文件需要用provider“Microsoft.ACE ...

  8. C#实现从EXCEL文件读取数据到SqlServer数据库

    用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...

  9. (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库

    场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 1 如何将 Excel 文件导入到 Navicat for MySQL 数据库 Navicat for MySQL  ...

随机推荐

  1. springboot注解之@Configuration 和 @Bean

    1.包结构 2.主程序类 1 /** 2 * 主程序类 3 * @SpringBootApplication:这是一个springboot应用 4 * 5 * @SpringBootApplicati ...

  2. Apache配置 1. 默认虚拟主机

    编辑httpd.conf搜索httpd-vhosts,去掉#号 # vi /usr/local/apache2.4/conf/httpd.conf Include conf/extra/httpd-v ...

  3. 搭建zabbix服务1

    环境准备: 静态ip 主机名 各自配置好主机名 # hostnamectl set-hostname --static zabbixserver.cluster.com 三台都互相绑定IP与主机名 # ...

  4. Typora的一些快捷键

      语法格式 快捷键 标题 # + 空格 = 一级标题, ## + 空格 =二级标题, 以此类推 shift + 数字1 =一级标题 ,shift + 数字2 =二级标题 , 以此类推 有序列表 1 ...

  5. F - Fluctuation Limit HDU - 6860

    题目链接:https://vjudge.net/problem/HDU-6860 题意:相邻两天的差值的绝对值不超过K. 思路:该题的关键在于前面的点会影响后面的点,后面的点会影响前面的点,我们要找到 ...

  6. 一文读懂MySql主从复制机制

    作为一个关系型数据库,MySQL内建地提供数据复制机制,这使得在使用时,可以基于其复制机制实现高可用架构等高级特性,从而使得MySQL无需借助额外的插件或其他工具就具备适用于生产环境.这是MySQL得 ...

  7. vs Code + Eslint + Prettier 代码格式化(vue开发)

    一.什么是Eslint 通过查看eslint官网(官网传送门),我们就可以知道,eslint就是一个用来识别 ECMAScript/JavaScript 并且按照规则给出报告的代码检测工具,主要用来检 ...

  8. Dynamics CRM安装教程五:ADFS安装配置

    ADFS即联合身份认证是一种更加安全的身份验证方式下面开始进行ADFS打开服务器管理器,到添加角色和功能向导下一步到下面界面勾选Active Directory 联合身份认证服务,下一步 默认,下一步 ...

  9. Java 使用 Maven BOM 统一管理版本号

    一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号.如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将变得十分麻烦.为了 ...

  10. Day11_55_在Map集合中使用泛型

    在Map集合中使用泛型 ``` import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ja ...