工作中常常有批量导入数据的需求,方法太多,掌握一个简单实用的足够了.下面为大家介绍一个好用的方法.

数据导入必须按照指定的格式系统方能识别,因此可两个大的步骤:一.导入模板下载  二.数据导入

一.模板下载 (创建export.php文件,存放模板代码)

1.下载导入PHPExcel库

点击连接,进入下载界面.

下载完毕,解压并记下文件路径.

将类导入程序中:

//1.导入PHPExcel库(引入文件路径)

include './PHPExcel_1.8.0_doc/Classes/PHPExcel.php';

//创建对象

$objPHPExcel = new PHPExcel();

//设置属性

$objPHPExcel->getProperties()

->setCreator("WOLF")

->setLastModifiedBy("WOLF")

->setTitle("Office 2007 XLSX Test Document")

->setSubject("Office 2007 XLSX Test Document")

->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");2.生成模板表头信息

//2.填充表头

$objActSheet = $objPHPExcel->setActiveSheetIndex(0);

$objActSheet->setCellValue('A1','姓名');

$objActSheet->setCellValue('B1','年龄');

$objActSheet->setCellValue('C1','薪水');3.生成模板

//3.生成excel表

$objPHPExcel->getActiveSheet()->setTitle('导入模板');

$objPHPExcel->setActiveSheetIndex(0);

$day = date("m-d");

$filename = $day.'导入模板.xls';

ob_end_clean();//清除缓冲区,避免乱码

header("Content-Type: application/vnd.ms-excel; charset=utf-8");

header('Content-Disposition: attachment;filename='.$filename);

header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');

$objWriter->save('php://output');

exit;

这样,模板就生成了.接下来需要做的是导入数据.

二.导入数据

1.创建前端文件(这里取名inport.php)

inport.php文件分两部分,html文件用于展示导入文件和模板下载操作界面,如下:

Title文件:

确认提交

模版下载

php代码用于接收session中存放的提交信息:

";

}else{

echo "";

}

//有插入失败时,输出错误信息

if(isset($errors[0])){

echo "$errors[0]";

}else{

foreach($errors as $linenumber => $errmsg){

if($errmsg){

echo "第 $linenumber 行:$errmsg

";

}

}

}

//没有错误信息时,提示成功

if(count($errors)==0 && isset($_SESSION['error'])){

echo "全部插入成功!";

}

echo "";

//销毁session

unset($_SESSION['error']);

?>2.创建后台解析文件(import.php)

思路: 接收提交的excel文件逐行进行解析,有问题的行记录存放在error数组中不进行数据更新.没有问题的更新数据库

解析完成后,将error数据存放在session中,跳转到原界面进行提示更新结果.

程序流程:

a.连接数据库  b.判断是否为excel类文件,是则进行解析  c.开始逐行解析,对每个字段加以判断内容是否合格,将错误信息存放数组

e.更新数据库  f.解析完毕,跳转回原界面

$conn=new mysqli("localhost","root","root","myDBPDO");

// 检测连接

if ($conn->connect_error) {

die("连接失败: " . $conn->connect_error);

}

if (isset($_FILES['xls'])) {

set_time_limit(0);

ini_set('memory_limit', '1024M');

//导入PHPExcel库

include './PHPExcel_1.8.0_doc/Classes/PHPExcel.php';

//获取导入文件名,并加以判断是否为excel文件

$xls = $_FILES['xls']['tmp_name'];

$name = $_FILES['xls']['name'];

$name = explode('.', $name);

//新建二维数组,用于存放错误信息,存放在session中传到前端提示

$errors = array();

//若文件格式为xls,xlsx,cvs时,进行解析

if ($xls AND ($name[1] == 'xls' OR $name[1] == 'xlsx' OR $name[1] == 'cvs')) {

$objReader = PHPExcel_IOFactory::load($xls);

$objReader = $objReader->getSheet(0);

$rows = $objReader->getHighestRow();

//若文件有内容,则读取

if($rows > 1){

for($i = 2;$i <= $rows;$i ++){

$name = trim($objReader->getCell('A'.$i)->getValue());

$age = trim($objReader->getCell('B'.$i)->getValue());

$salary = trim($objReader->getCell('C'.$i)->getValue());

//遇到空白行,跳出本次循环

if($name=='' && $age=='' && $salary==''){

continue;

}

//保存错误信息

if(empty($name)){

$errors["$i"] = '姓名必须填';

}

if(empty($age)){

$errors["$i"] = '年龄必须填';

}

if(empty($salary)){

$errors["$i"] = '薪水必须填';

}

if (empty($errors["$i"])) {

unset($errors["$i"]);

// 更新emp表

$sql="insert into emp (name,salary,age) values ('$name',$salary,$age)";

$result=$conn->query($sql);

}

unset($name);

unset($age);

unset($salary);

}

//文件没有内容

}else{

$errors[0] = '请从表格第2行开始填写正确的数据';

}

//不是excel类文件

}else{

$errors[0] = '请选择EXCEL文件';

}

session_start(); // 首先开启session

$_SESSION['error'] = $errors; // 把error存在$_SESSION['error'] 里面

header("Location:./adds.php"); //跳回页面

}

到此,批量导入功能就算完成,涉及的知识比较全面.实际工作中批量导入数据量大时,解析文件e步骤中更新数据库可以优化,

每150行或200行更新一次数据库,

insert into emp (name,salary,age) values ('$name1',$salary1,$age1),('$name2',$salary2,$age2)......可以大幅度提高效率.

php批量导入多个excel,php的excel数据批量导入相关推荐

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

    2019独角兽企业重金招聘Python工程师标准>>> 这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插 ...

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

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

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

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

  4. [DJANGO] excel十几万行数据快速导入数据库研究

    先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...

  5. docker导入MySQL文件_Docker容器中Mysql数据的导入/导出详解

    前言 Mysql数据的导入导出我们都知道一个mysqldump命令就能够解决,但如果是运行在docker环境下的mysql呢? 解决办法其实还是用mysqldump命令,但是我们需要进入docker的 ...

  6. php将excel数据导入mysql表中_【PHP】将EXCEL表中的数据轻松导入Mysql数据表

    在网络上有不较多的方法,在此介绍我已经验证的方法. 方法一.利用EXCEL表本身的功能生成SQL代码 ①.先在"phpmyadmin"中建立数据库与表(数据库:excel,数据表: ...

  7. 自动将Excel文件中的数据批量填写到网页表单

    把Excel表格内容录入到网页表单,只需要设置表单输入框与Excel字段间的对应关系就可以了.一般按以下几个步骤操作: 1.先打开测试的表单看一下,并在木头浏览器(MutouBrowser)主窗口中, ...

  8. mysql 批量加索引_mysql优化:按期删数据 + 批量insert + 字符串加索引为何很傻

    嗯,犯了一个很低级的错误,最近暴露出来了.html 背景:mysql 1. 内部平台,接口间断性无返回,查询日志注意到失败时,接口耗时达到4000+(正常状态:100+ms)git 2. 增长日志打点 ...

  9. .unl 文件 导入 mysql,informix导出的unl格式数据怎么导入sql server 2008里呢

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 上面问题解决了 一个新问题来了....>>>>> 错误 0xc0202009: 数据流任务 1: SSIS 错误代码 DTS ...

  10. python爬虫导入数据库_python爬虫爬下来的数据怎么导入到MySQL

    展开全部 下载mysql.connector库 然后把爬虫2113爬到的数据5261通过mysql里面的insert语句查到数4102据库,当然也可以建表1653,一般我没用python建表 是先建好 ...

最新文章

  1. DOTNET防止反编译
  2. sympy随笔-python符号计算
  3. 基于VC的OPC客户端软件研究与实现
  4. 数据结构---队列C语言实现
  5. \sdk\include\wspiapi.h(47) : error C2265: 'Unknown' : reference to a zero-sized array is illegal 解
  6. java mongodb 使用场景_mongodb使用场景一般是什么?mongodb有哪些基本命令?
  7. Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
  8. oracle表空间的创建、修改、删除及一些参数解释
  9. 软件项目经理的心得和经验总结
  10. Python元组练习题
  11. c语言指针详解 PPT,最全C语言指针详解.ppt
  12. 基于FPGA的关于flash一些学习记录
  13. NLP笔记之文本聚类
  14. Win10登录界面隐藏其他账户
  15. integer conversion resulted in a change of sign
  16. 【Python】新华字典(bushi
  17. libapache2-mod-php5 apache,Debian Etch libapache2-mod-php5 with bundled libgd
  18. uclinux + nios (UCLinux在NIOS上的移植)
  19. 2022 腾讯社招Golang后端面试经验分享
  20. 计算机漏洞英语怎么说,游戏漏洞英文怎么写

热门文章

  1. 原生js春节倒计时@酷酷航
  2. 解决css样式中first-child和last-child不生效的问题
  3. imx6 linux 开发环境,从0搭建imx6ul开发环境
  4. Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档
  5. Ivor Horton‘s Beginning Visual C++ 2013 - Visual C++ 2013 入门经典
  6. 你值得拥有!-阿里P8架构师荣耀典藏:Java多线程与Socket实战微服务框架笔记
  7. win10蓝牙android上网,Win10系统如何共享安卓手机蓝牙上网(非热点)
  8. 手办商城app开发功能分析
  9. 得到语音下载(dedaodown)
  10. (翻译)预览(Preview)