php批量导入多个excel,php的excel数据批量导入
工作中常常有批量导入数据的需求,方法太多,掌握一个简单实用的足够了.下面为大家介绍一个好用的方法.
数据导入必须按照指定的格式系统方能识别,因此可两个大的步骤:一.导入模板下载 二.数据导入
一.模板下载 (创建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数据批量导入相关推荐
- PHP将excel文件中的数据批量导入到数据库中
2019独角兽企业重金招聘Python工程师标准>>> 这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插 ...
- php excel批量导入,PHP将excel文件中的数据批量导入到数据库中
这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插入到数据表中.当然,前提是用户给我们的excel表格中的信息必须和我们表中 ...
- 【Python自动化办公】实现excel表中的数据批量导入到word指定位置(表格形式和下滑线形式)
文章目录 案例1--word模板为表格 案例2--word模板中带有下划线形式 python docx基本操作 回到需求 案例1--word模板为表格 目的就是把excel中的数据,填入word模板中 ...
- [DJANGO] excel十几万行数据快速导入数据库研究
先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...
- docker导入MySQL文件_Docker容器中Mysql数据的导入/导出详解
前言 Mysql数据的导入导出我们都知道一个mysqldump命令就能够解决,但如果是运行在docker环境下的mysql呢? 解决办法其实还是用mysqldump命令,但是我们需要进入docker的 ...
- php将excel数据导入mysql表中_【PHP】将EXCEL表中的数据轻松导入Mysql数据表
在网络上有不较多的方法,在此介绍我已经验证的方法. 方法一.利用EXCEL表本身的功能生成SQL代码 ①.先在"phpmyadmin"中建立数据库与表(数据库:excel,数据表: ...
- 自动将Excel文件中的数据批量填写到网页表单
把Excel表格内容录入到网页表单,只需要设置表单输入框与Excel字段间的对应关系就可以了.一般按以下几个步骤操作: 1.先打开测试的表单看一下,并在木头浏览器(MutouBrowser)主窗口中, ...
- mysql 批量加索引_mysql优化:按期删数据 + 批量insert + 字符串加索引为何很傻
嗯,犯了一个很低级的错误,最近暴露出来了.html 背景:mysql 1. 内部平台,接口间断性无返回,查询日志注意到失败时,接口耗时达到4000+(正常状态:100+ms)git 2. 增长日志打点 ...
- .unl 文件 导入 mysql,informix导出的unl格式数据怎么导入sql server 2008里呢
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 上面问题解决了 一个新问题来了....>>>>> 错误 0xc0202009: 数据流任务 1: SSIS 错误代码 DTS ...
- python爬虫导入数据库_python爬虫爬下来的数据怎么导入到MySQL
展开全部 下载mysql.connector库 然后把爬虫2113爬到的数据5261通过mysql里面的insert语句查到数4102据库,当然也可以建表1653,一般我没用python建表 是先建好 ...
最新文章
- DOTNET防止反编译
- sympy随笔-python符号计算
- 基于VC的OPC客户端软件研究与实现
- 数据结构---队列C语言实现
- \sdk\include\wspiapi.h(47) : error C2265: 'Unknown' : reference to a zero-sized array is illegal 解
- java mongodb 使用场景_mongodb使用场景一般是什么?mongodb有哪些基本命令?
- Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
- oracle表空间的创建、修改、删除及一些参数解释
- 软件项目经理的心得和经验总结
- Python元组练习题
- c语言指针详解 PPT,最全C语言指针详解.ppt
- 基于FPGA的关于flash一些学习记录
- NLP笔记之文本聚类
- Win10登录界面隐藏其他账户
- integer conversion resulted in a change of sign
- 【Python】新华字典(bushi
- libapache2-mod-php5 apache,Debian Etch libapache2-mod-php5 with bundled libgd
- uclinux + nios (UCLinux在NIOS上的移植)
- 2022 腾讯社招Golang后端面试经验分享
- 计算机漏洞英语怎么说,游戏漏洞英文怎么写
热门文章
- 原生js春节倒计时@酷酷航
- 解决css样式中first-child和last-child不生效的问题
- imx6 linux 开发环境,从0搭建imx6ul开发环境
- Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档
- Ivor Horton‘s Beginning Visual C++ 2013 - Visual C++ 2013 入门经典
- 你值得拥有!-阿里P8架构师荣耀典藏:Java多线程与Socket实战微服务框架笔记
- win10蓝牙android上网,Win10系统如何共享安卓手机蓝牙上网(非热点)
- 手办商城app开发功能分析
- 得到语音下载(dedaodown)
- (翻译)预览(Preview)