2019独角兽企业重金招聘Python工程师标准>>>

这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插入到数据表中。当然,前提是用户给我们的excel表格中的信息必须和我们表中的字段信息时对应的才行,下面是我这边后台进行批量导入数据的实现步骤。

首先我们需要下载phpExcel

phpExcel是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格.

有需要这个类库的童鞋可以找我要,本人邮箱823410261@qq.com。

下载好phpExcel后,下面就是编码实现部分了,首先说下本人处理的整体思路。

首先是需要得到excel表格中的数据,其次是需要将这些数据做成符合SQL规范的格式,其中的细节处理将在下面的代码中展示,最后是将获取的数据连同SQL语句,一起在程序中执行,将所有结果插入到数据表中。


<?php
require_once '../Classes/PHPExcel.php';
function getFileExcle($value){$cgsdiseasesinterface = new Cgs_diseases_interface();$filePath = $value;//$value为需要导入数据的excel文件$PHPExcel = new PHPExcel();/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/$PHPReader = new PHPExcel_Reader_Excel2007();if(!$PHPReader->canRead($filePath)){$PHPReader = new PHPExcel_Reader_Excel5();if(!$PHPReader->canRead($filePath)){echo 'no Excel';return ;}}$PHPExcel = $PHPReader->load($filePath);/**读取excel文件中的第一个工作表*/$currentSheet = $PHPExcel->getSheet(0);/**取得最大的列号*/$allColumn = $currentSheet->getHighestColumn();/**取得一共有多少行*/$allRow = $currentSheet->getHighestRow();$row = array();/**从第二行开始输出,因为excel表中第一行为列名*/for($currentRow = 2;$currentRow <= $allRow;$currentRow++){/**从第A列开始输出*/$col = array();for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/array_push($col,$val);}array_push($row,$col);}foreach($row as $key=>$value){$row[$key][1] = '\''.$value[1].'\'';}foreach($row as $key=>$value){$row[$key] = implode(",",$value);}$row = implode("),(",$row);$row = '('.$row.')';$res = $cgsdiseasesinterface->insertDiseasesInformation($row);//该函数将数据插入到数据库中if($res){echo json_encode(['code' => CODE_SUCCESS, 'result' => '批量导入成功']);}else{echo json_encode(['code' => CODE_ERROR, 'result' => '批量导入失败']);}
}

这里有一个点需要主要的是因为$currentRow是从2开始的,所以第一行应该是对应的字段的解释,从第二行开始才是我们所需要的数据,大家可以根据自己程序的实际需要进行更改。

这里我是将所以的数据都做了字符串的拼接,好处是在数据库是短连接时,可以只需要连接一次数据库,这样节约了时间和系统资源,如果数据库的设置是长连接,则用字符串拼接的优势不明显。当然,大家其实也可以用循环来实现将数据插入到表中,这种方式的优势是不需要对数据进行复杂的拼接处理,但坏处就是我刚才说的,增加了运行的时间,并相对来说更消耗系统资源。

转载于:https://my.oschina.net/zhaoqun/blog/678785

PHP将excel文件中的数据批量导入到数据库中相关推荐

  1. php excel批量导入,PHP将excel文件中的数据批量导入到数据库中

    这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插入到数据表中.当然,前提是用户给我们的excel表格中的信息必须和我们表中 ...

  2. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

  3. matlab如何在word中插入多个表格,怎么把excel中的数据批量导入到word中的表格中《不同表格间的数据导入》...

    如何将excel表格中大量数据导入matlab中并作图 工具:MATLAB.office excel 将待导入的矩阵结构据录入Excel中,录入时注意行列原矩阵一一对应. 录入完以后保存数据,为了后续 ...

  4. dataset中的数据批量导入oracle数据库,c#如何将dataset中的数据批量导入oracle数据库...

    c#如何将dataset中的数据批量导入oracle数据库以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c#如何将da ...

  5. dataset中的数据批量导入oracle数据库,C#如何把某个文件夹下的所有Excel文件导入Oracle数据库。详细点!...

    满意答案 o8wlfkcnr 推荐于 2016.01.01 采纳率:45%    等级:7 已帮助:311人 用下面这个方法把excel导入dataview,再把它导入database就简单了 pub ...

  6. .net excel导入mysql_.NET Core使用NPOI将Excel中的数据批量导入到MySQL - 追逐时光者 - 博客园...

    前言: 在之前的几篇博客中写过.NET Core使用NPOI导出Word和Excel的文章,今天把同样我们日常开发中比较常用的使用Excel导入数据到MySQL数据库中的文章给安排上.与此同时还把NP ...

  7. java 农历的编写保存数据批量插入到数据库中

    java 农历的编写保存数据批量插入到数据库中 1.阴历转农历的工具类 public class Nongli {private static int monCyl, dayCyl, yearCyl; ...

  8. 【Python自动化办公】实现excel表中的数据批量导入到word指定位置(表格形式和下滑线形式)

    文章目录 案例1--word模板为表格 案例2--word模板中带有下划线形式 python docx基本操作 回到需求 案例1--word模板为表格 目的就是把excel中的数据,填入word模板中 ...

  9. 将Excel表格数据批量导入MySQL数据库表中

    在实际的生产开发需求中很多时候生产数据不一定是通过数据库进行导入,而是通过Excel表格的形式传入形式,这时候需要程序员进行自动化的导入. 手动导入数据库,效率相对来说太慢,因此需要使用技巧,实现批量 ...

最新文章

  1. Ubuntu iso镜像文件写入U盘
  2. NYOJ72Financial Management
  3. Kubernetes 容器网络模型和典型实现
  4. tf之ValueError: Tried to convert ‘values‘ to a tensor and failed. Error: None values not supported
  5. 如何将Java工程导出成可以执行的jar
  6. FormatJS – 让你的 Web 应用程序国际化
  7. 这5种员工,千万不能重用
  8. idea 新建springboot 的 web 项目
  9. rstudio的数据集怎么建立和保存_这个40M的小工具助你在windows下处理数据如虎添翼...
  10. mybatis11--多对多关联查询
  11. s3c6410 nand初始化
  12. 个人管理:发掘自己的性格优势
  13. 黄金手镯一般多少克?
  14. 【Java学习笔记之三十一】详解Java8 lambda表达式
  15. 使用Timer的schedule()方法
  16. Expression Blend学习四控件-按钮
  17. 数据库路由中间件MyCat - 源代码篇(11)
  18. 流程机器人 RPA:AI落地的接盘侠 | 甲子光年
  19. abb限位开关已打开drv1_ABB机器人常见故障处理
  20. mybatisplus代码生成器

热门文章

  1. 我的jquery之路
  2. CSS布局代码:两列布局实例
  3. b2c开发模式的数据库设计
  4. 分享阿里云SLB-负载均衡的实现基本原理架构
  5. III (十七) haproxy(2)
  6. 鲁亿通欲收购昇辉控股 跨界布局照明、智慧城市领域
  7. Struts07---访问servlet的API
  8. nginx配置websocket代理
  9. hitTest和pointInside如何响应用户点击事件
  10. 浅析pinyin4j源码 简单利用pinyin4j对中文字符进行自然排序(转)