欢迎光临
我们一直在努力

DEDECMS批量导入excel数据到后台文章系统的开发教程

dedecms批量导入excel数据到后台文章系统的开发教程

2021-07-15分类:技术教程评论(0)

于一些企业网站或者淘宝客类网站经常会需要将一些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);引入织梦系统的公共文件common.inc.php,为什么要引入这个文件,我们在插入数据库表前,首页要连接网站的数据库,如果不连接将无法插入数据库数据。要注意,引入文件的路径要改成您自己的,因为,我把织梦系统安装在了dedecms里面,所以,路径中有这个目录名称dedecms,如果您安装在根目录的话就去掉这个路径。设置错误报告、设置时区、设置程序运行时间,当然,这个运行时间可以不设置、设置phpexcel类的类库存路径,然后,引入iofactory.php文件,这个文件是最重要的,本功能就是通过这个文件来处理的,这几个设置代码如下:dc50293bfe5b145

(此图片来源于网络,如有侵权,请联系删除! )

这些代码全是phpexcel类里面提供的,所以,这里不用多解释。2) 开发插入数据代码:为了讲解方式,我们将直接以这种形式来插入数据:https://www.bnxb.com/excelinsert.php?dopost=exdata&typeid=6&n=test1表示通过文件excelinert.php插入excel里面的名称为test1的里面的数据,把这些数据插入到织梦数据库表dede_archvies里面,栏目id为6的表中,其中,dopost=exdata表示插入数据口令,因为,作一个判断的话,那什么人也能插入到您的数据库表里面数据了,这是非常可怕的,就像一个网站没有后台一样,这是不是非常可能谁都可以进入网站后台里面,同样的,如果不加这个口令的话,谁都可以插入数据,这是不安全的。所以,在插入数据前先通过$get超级数组获取到typeid、do和n的值,然后,进行对比看看有没有权限进行插入数据库操作,第一个判断应当是判断口令是否正确,如果这个都不正确的话,就不再向下操作了。为了讲解方便,下面提供excelinsert.php开发完整的代码:

header(“content-type:text/html;charset=utf8”);require_once(/http://www.sjztyd.com/a/zhimengjiaocheng/dedecms/include/common.inc.php);error_reporting(e_all);set_time_limit(0);date_default_timezone_set(europe/london);set_include_path(get_include_path().path_separator.http://www.sjztyd.com/classes/);includephpexcel/iofactory.php;if(!empty($_get)){$typeid=$_get[typeid];$dopost=$_get[do];if($dopost==“exdata”){if(!empty($_get[n])){$inputfilename=http://www.sjztyd.com/a/zhimengjiaocheng/development/.$_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($sheetdataas$v){foreach($rowarras$vt){if(in_array($v[b],$vt)&&$v[a]==$vt[bio1]){echo“货号为:”.$v[b].” 厂商为:”.$v[a].” 的数据已在表中,请在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($sheetdataas$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:;);}
分享到:更多(0)
标签:织梦
上一篇织梦调用自定义字段下一篇什么是织梦加固版?

赞(0)
未经允许不得转载:梦马网络 » DEDECMS批量导入excel数据到后台文章系统的开发教程
分享到

评论 抢沙发

登录

找回密码

注册