DEDE怎样批量导入excel数据到后盾?
DEDE批量导入excel数据到后盾文章零碎的开发教程
关于一些企业网站或许淘宝客类网站常常会需求将一些excel的数据批量导入到网站,经过批量导入来节流工夫而没有是从网站后盾一条一条的录入加数据,具备肯定的参考代价,感兴味的小同伴们能够参考一下
保举学习:织梦cms
关于一些企业网站或许淘宝客类网站常常会需求将一些excel的数据批量导入到网站,经过批量导入来节流工夫而没有是从网站后盾一条一条的录入加数据。本教程就是以把excel数据导入到织梦零碎(dedecms)为例子进行批量数据导入的开发,假定把excel数据导入到织梦主表dede_archives(另有微表以及附加表,这里就用主表代表这三个表)外面。
批量导入excel数据原理:经过查问excel,把数据一条一条的读掏出来,而后,经过咱们开发的php顺序把数据导入到内外面。
经过下面的原理咱们晓得,咱们能够把批量导入excel数据分为两局部,一局部是开收回从excel读取数据的顺序,另外一局部是开收回把读掏出来的数据拔出到数据库表dede_archives外面。
从excel读取数据顺序开发
其实,这一步有一个老外曾经帮咱们开发好了,这个老外开发了一套专门读取excel数据表的顺序叫PHPExcel类库。
这个excel类库还包罗其它的一些性能,这里纷歧一引见,您能够下载来看看,这里只对读取excel进行解说。
把读掏出来的数据拔出到主表dede_archives外面
当经过PHPExcel类库外面提供的类读取数据后,这一步就是把数据拔出到数据库内外面,以是,这一个教程的开发其实就是正在开发这一局部 ; 把从excel读掏出来的数据拔出到主表中的顺序开发。
为了解说不便,咱们把拔出数据库表中的数据的文件名叫做excelinert.php ,上面就正在这个文件外面进入顺序开发,把读掏出来的数据拔出到数据库表中。
拔出数据开发原理
1)开发前的预备:
正在excelinsert.php外面退出一个header头的编码,目的是为了对立编码以避免呈现乱码:header("Content-type:text/html;charset=utf8");
引入织梦零碎的公共文件co妹妹on.inc.php,为何要引入这个文件,咱们正在拔出数据库表前,首页要衔接网站的数据库,假如没有衔接将无奈拔出数据库数据。要留意,引入文件的门路要改为您本人的,由于,我把织梦零碎装置正在了dedecms外面,以是,门路中有这个目次称号dedecms,假如您装置正在根目次的话就去掉这个门路。
设置谬误陈诉、设置时区、设置顺序运转工夫,当然,这个运转工夫能够没有设置、设置PHPExcel类的类库存门路,而后,引入IOFactory.php文件,这个文件是最首要的,本性能就是经过这个文件来解决的,这几个设置代码以下:
这些代码全是PHPExcel类外面提供的,以是,这里不必多诠释。
2) 开发拔出数据代码:
示意经过文件excelinert.php拔出excel外面的称号为test1的外面的数据,把这些数据拔出到织梦数据库表dede_archvies外面,栏目id为6的表中,此中,dopost=exdata示意拔出数据口令,由于,作一个判别的话,那甚么人也能拔出到您的数据库内外面数据了,这长短常可骇的,就像一个网站不后盾同样,这是否是十分可能谁均可以进入网站后盾外面,一样的,假如没有加这个口令的话,谁均可以拔出数据,这是没有平安的。
以是,正在拔出数据前先经过$GET超等数组猎取到typeid、do以及n的值,而后,进行比照看看有无权限进行拔出数据库操作,第一个判别该当是判别口令能否正确,假如这个都没有正确的话,就再也不向下操作了。
为了解说不便,上面提供excelinsert.php开发完好的代码:
<?php header("Content-type:text/html;charset=utf8"); require_once('/../dedecms/include/co妹妹on.inc.php'); error_reporting(E_ALL); set_time_limit(0); date_default_timezone_set('Europe/London'); /** Include path **/ set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/'); /** PHPExcel_IOFactory */ include 'PHPExcel/IOFactory.php'; if(!empty($_GET)){ $typeid = $_GET['typeid']; $dopost = $_GET['do']; if($dopost == "exdata"){ if(!empty($_GET['n'])){ $inputFileName = './'.$_GET['n'].'.xlsx'; $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); $rowarr=array(); $dsql->Execute('all',"select bio2,bio1 from `dede_addonshop`"); while ($rowall = $dsql->GetArray('all')) { $rowarr[]=$rowall; } foreach ($sheetData as $v) { foreach ($rowarr as $vt) { if(in_array($v['B'],$vt)&&$v['A']==$vt['bio1']){ echo "货号为:".$v['B']."<br>厂商为:".$v['A']."<br>的数据已正在表中,请正在excel文件外面删除了这一条后再增加!"; exit; } } } //附加表拔出数据前解决 $row = $dsql->GetOne("select aid,bio2 from `dede_addonshop` order by aid desc"); if(!empty($row)){ $aid = $row['aid']; $bio2 = $row['bio2']; }else{ $aid = 0; $bio2 = ''; } //解决反复成绩 if($bio2==$sheetData[count($sheetData)]['B']){ ShowMsg("不克不及反复增加内容",'javascript:;'); exit; } //主表拔出数据前解决 $arcrow = $dsql->GetOne("select id from `dede_archives` order by id desc"); if(!empty($arcrow)){ $arcid = $arcrow['id']; }else{ $arcid = 0; } //微表拔出数据前解决 $tinyrow = $dsql->GetOne("select id from `dede_arctiny` order by id desc"); if(!empty($tinyrow)){ $tinyid = $tinyrow['id']; }else{ $tinyid = 0; } //找出最年夜的id $id = max($aid,$arcid,$tinyid); $alphalpha = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); //字段数目 $fieldnum = count($sheetData[1]); $fields = $fieldvalue = ''; for ($i=0; $i < $fieldnum; $i++) { $fields .= $sheetData[1][$alphalpha[$i]]. ','; } $fields = substr($fields, 0,-1); //遍历数组 foreach ($sheetData as $value) { $pubdate = GetMkTime(GetDateTimeMk(time())); $click = mt_rand(50, 200); if($value['A']=='bio1'|$value['A']=='厂商'){ continue; } $id = $id+1; //猎取字段值$value['A']; for ($i=0; $i < $fieldnum; $i++) { $fieldvalue .= " ,'".$value[$alphalpha[$i]]."' "; } //题目 $C = trim($value['C']); //保留到主表 $senddate = time(); $arcquery = "INSERT INTO `dede_archives`(id,typeid,title,mid,channel,pubdate,senddate,click,ismake)VALUES ('$id','$typeid','$C','1','6','$pubdate','$senddate','$click','-1');"; $dsql->ExecuteNoneQuery($arcquery); //保留到左近加表 $query = "INSERT INTO `dede_addonshop`(aid,typeid,$fields) VALUES ('$id','$typeid'{$fieldvalue});"; $dsql->ExecuteNoneQuery($query); $fieldvalue = ''; //保留到微表 $tinyquery = "INSERT INTO `dede_arctiny`(id,typeid,channel,mid,senddate)VALUES ('$id','$typeid','6','1','$senddate');"; $dsql->ExecuteNoneQuery($tinyquery); } $num = count($sheetData)-2; ShowMsg("祝贺,胜利拔出 ".$num." 条数据!",'javascript:;'); } } }else{ echo "明码或文件名谬误!您无权做任何操作!"; } ?>
标签: 织梦教程 织梦技巧 dedecms教程 dede问题解决 dede