主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
dede如何将excel数据批量导入后台?
DEDE批量导入excel数据到后台文章系统开发教程
对于一些企业网站或淘宝客网站,经常需要将一些excel数据批量导入到网站中。通过批量导入而不是从网站后台逐个添加数据来节省时间,具有一定的参考价值。感兴趣的朋友可以参考一下。
推荐学习:梦想编织cms
对于一些企业网站或淘宝客网站来说,经常需要将一些excel数据批量导入到网站中,以节省时间,而不是从网站后台逐个添加数据。本教程基于将excel数据导入dream weaving系统(dedecms)进行批量数据导入开发的示例。假设将excel数据导入到dream weaving主表dede_archives中(还有微表和附加表,这里用主表表示这三个表)。
批量导入excel数据的原理:通过查询excel逐个读取数据,然后通过我们开发的php程序将数据导入到表格中。
通过以上原则,我们知道可以将excel数据的批量导入分为两部分。一部分是开发一个程序从excel中读取数据,另一部分是将读取的数据插入数据库表dede_archives中。
从excel读取数据的程序开发
事实上,一个外国人帮助我们发展了这一步。这个老外开发了一个叫PHP excel类库的程序来读取excel数据表。
这个excel类库还包括一些其他函数,这里不做介绍。你可以下载下来看看。这里只说明读取excel。
将读取的数据插入主表dede_archives。
通过PHPExcel类库中提供的类读取数据后,这一步是将数据插入数据库表中,因此本教程的开发实际上是开发这一部分;将excel中读取的数据插入主表的程序开发。
为了便于解释,我们将插入数据库表的数据的文件名称为excelinert.php,然后我们将在此文件中输入程序开发并将读取的数据插入数据库表。
插入数据开发原则
1)开发前准备:
在excelinsert.php,添加了标题的编码,以便统一编码,从而避免乱码:header(“Content-type:text/html;字符集= utf8“);
Common.inc.php,一个介绍梦想编织系统的公开文件,为什么我们要介绍这个文件?在我们插入数据库表之前,主页应该连接到网站的数据库。如果没有连接,我们将无法插入数据库数据。注意,导入文件的路径应该改为您自己的路径,因为我在DEDEECMS中安装了dream weaving系统,所以路径中有这个目录名DEECMS。如果您将其安装在根目录中,请删除该路径。
设置错误报告、设置时区和设置程序的运行时间。当然,可以在不设置PHPExcel的类目录路径的情况下设置运行时间,然后引入IOFactory.php文件。这个文件是最重要的,这个功能是通过这个文件处理的。这些设置代码如下:
这些代码都在PHPExcel类中提供,因此无需在此解释。
2)开发插入数据的代码:
这意味着名为test1的数据通过文件excelinert.php插入到excel中,这些数据被插入到列id为6的dream weaving数据库的dede_archvies表中,其中dopost=exdata表示插入数据的密码,因为如果做出判断,那么任何人都可以将数据插入到您的数据库表中。这是非常可怕的,就像一个没有后台的网站一样。任何人都可以进入网站后台的可能性很大吗?同样,任何人都可以在没有此密码的情况下插入数据,这是不安全的。
因此,在插入数据之前,通过$GET超级数组获取typeid、do和N的值,然后比较它们,看看您是否有权限将数据插入数据库。第一判断应该是判断密码是否正确。如果这是不正确的,你就不会向下操作。
为了便于解释,下面提供了由excelinsert.php开发的完整代码:
& lt?phpheader(& quot;内容类型:文本/html;charset=utf8");require _ once(& amp;#39;/../dedecms/include/common . Inc . PHP & amp;#39;);错误报告;set _ time _ limit(0)日期默认时区集(& amp#39;欧洲/伦敦和伦敦#39;);/**包含路径* */set _ Include _ path(get _ Include _ path()。路径_分隔符。& amp#39;../../../class/& amp;#39;);/* * PHP excel _ io factory */include & amp;#39;PHP excel/io factory . PHP & amp;#39;;如果(!empty($ _ GET)){ $ typeid = $ _ GET【& amp;#39;typeid & amp#39;];$ dopost = $ _ GET【& amp;#39;do & amp#39;];if($ dopost = = & quot;exdata & quot){ if(!empty($ _ GET【& amp;#39;n & amp#39;】)){ $ inputFileName = & amp#39;。/& amp;#39;。$ _ GET【& amp;#39;n & amp#39;].& amp#39;。xlsx & amp#39;;$ objPHPExcel = PHP excel _ io factory::load($ input filename);$ sheet data = $ objPHPExcel-& gt;getActiveSheet()-& gt;to array(null,true,true,true);$ row arr = array();$ dsql-& gt;执行(& amp#39;所有& amp#39;,& quot从“dede_addonshop”中选择bio2、bio1);while($ row all = $ dsql-& gt;GetArray(& amp;#39;所有& amp#39;)){ $ row arr【】= $ row all;} foreach($ sheet data as $ v){ foreach($ rowarr as $ vt){ if(in _ array($ v【& amp;#39;B& amp;#39;】,$ vt)& amp;& amp$ v【& amp;#39;A & amp#39;】= = $ vt【& amp;#39;生物& amp#39;】){回声& quot文章编号:“。$ v【& amp;#39;B& amp;#39;]."& ltbr & gt制造商是:“。$ v【& amp;#39;A & amp#39;]."& ltbr & gt的数据已经在表中。请在添加前删除excel文件中的此项!";退出;} } }//将数据插入附加表之前的预处理$ row = $ dsql-& gt;GetOne(& quot;从“dede _ addonshop‘order by aid desc”中选择aid,bio2);如果(!empty($ row)){ $ aid = $ row【& amp;#39;援助与发展。#39;];$ bio2 = $ row【& amp;#39;生物圈二号& amp#39;];} else { $ aid = 0;$ bio2 = & amp#39;& amp#39;;}//处理重复问题if($ bio 2 = = $ sheet data【count($ sheet data)】【&;#39;B& amp;#39;】){ ShowMsg(& quot;不能重复添加内容“,& amp#39;JavaScript:;& amp#39;);退出;}//将数据插入主表之前的预处理$ arcrow = $ dsql-& gt;GetOne(& quot;从“dede _ archives‘order by id desc”中选择id);如果(!empty($ arcrow)){ $ arcid = $ arcrow【& amp;#39;id & amp#39;];} else { $ arcid = 0;}//微表插入数据的预处理$ tiny row = $ dsql-& gt;GetOne(& quot;从“dede _ arctiny‘order by id desc”中选择id);如果(!empty($ tiny row)){ $ tinyid = $ tiny row【& amp;#39;id & amp#39;];} else { $ tinyid = 0;}//查找最大的id $ id = max($ aid,$arcid,$ tinyid);$ alpha = array(& amp;#39;A & amp#39;,& amp#39;B& amp;#39;,& amp#39;C & amp#39;,& amp#39;D & amp#39;,& amp#39;E & amp#39;,& amp#39;F & amp#39;,& amp#39;G & amp#39;,& amp#39;H & amp#39;,& amp#39;我& amp#39;,& amp#39;强生公司。#39;,& amp#39;K & amp#39;,& amp#39;L & amp#39;,& amp#39;M & amp#39;,& amp#39;N & amp#39;,& amp#39;O & amp#39;,& amp#39;宝洁公司。#39;,& amp#39;问与答。#39;,& amp#39;R & amp#39;,& amp#39;标准普尔。#39;,& amp#39;T & amp#39;,& amp#39;U & amp#39;,& amp#39;V & amp#39;,& amp#39;W & amp#39;,& amp#39;X & amp#39;,& amp#39;Y & amp#39;,& amp#39;Z & amp#39;,& amp#39;AA & amp#39;,& amp#39;AB & amp#39;,& amp#39;AC & amp#39;,& amp#39;广告与广告。#39;,& amp#39;AE & amp#39;,& amp#39;AF & amp#39;,& amp#39;AG & amp#39;,& amp#39;啊& amp#39;,& amp#39;AI & amp#39;,& amp#39;AJ & amp#39;,& amp#39;AK & amp#39;,& amp#39;铝和铝。#39;,& amp#39;AM & amp#39;,& amp#39;安& amp#39;,& amp#39;AO & amp#39;,& amp#39;美联社& amp#39;,& amp#39;AQ & amp;#39;,& amp#39;AR & amp#39;,& amp#39;AS & amp#39;,& amp#39;美国电话电报公司。#39;,& amp#39;AU & amp#39;,& amp#39;AV & amp#39;,& amp#39;AW & amp#39;,& amp#39;AX & amp#39;,& amp#39;AY & amp#39;,& amp#39;AZ & amp#39;);//字段数$ field num = count($ sheet data【1】);$ fields = $ fieldvalue = & amp#39;& amp#39;;for($ I = 0;$ i & lt$ fieldnum$ i++){ $ fields。= $ sheet data【1】【$ alpha【$ I】】。& amp#39;,& amp#39;;} $ fields = substr($ fields,0,-1);//遍历数组foreach($ sheet data as $ value){ $ pubdate = getmktime(getdatetimemk(time()));$ click = mt _ rand(50,200);if($ value【& amp;#39;A & amp#39;】= = & amp#39;生物& amp#39;| $ value【& amp;#39;A & amp#39;】= = & amp#39;制造商& amp # 39){继续;} $ id = $ id+1;//获取字段值$ value【&;#39;A & amp#39;];for($ I = 0;$ i & lt$ fieldnum$ i++){ $ field value。= & quot,& amp#39;"。$ value【$ alpha【$ I】】。"& amp#39;";}//Title $ c = trim($ value【&;#39;C & amp#39;]);//保存到主表$ senddate = time();$ arcquery = & quot插入` dede _ archives`(id,typeid,title,mid,channel,pubdate,senddate,click,ismake)值(& amp#39;$ id & amp#39;,& amp#39;$ typeid & amp#39;,& amp#39;$ C & amp#39;,& amp#39;1 & amp#39;,& amp#39;6 & amp#39;,& amp#39;$ pubdate & amp#39;,& amp#39;$ senddate & amp#39;,& amp#39;$ click & amp#39;,& amp#39;-1 & amp;#39;);";$ dsql-& gt;executonequery($ arc query);//将其保存在附近并添加一个表$ query =“INSERT INTO ` dede _ addonshop`(aid,typeid,$fields)值(& amp#39;$ id & amp#39;,& amp#39;$ typeid & amp#39;{ $ field value });";$ dsql-& gt;executonequery($ query);$ fieldvalue = & amp#39;& amp#39;;//保存到微表$ tiny query =“INSERT INTO ` dede _ arctiny`(id,typeid,channel,mid,senddate)值(& amp#39;$ id & amp#39;,& amp#39;$ typeid & amp#39;,& amp#39;6 & amp#39;,& amp#39;1 & amp#39;,& amp#39;$ senddate & amp#39;);";$ dsql-& gt;executonequery($ tiny query);} $ num = count($ sheet data)-2;ShowMsg(& quot;恭喜你,成功插入”。$num。"数据!",& amp#39;JavaScript:;& amp#39;);} } } else { echo & quot密码或文件名错误!你没有权利做任何事!";}?& gt以上是将excel中的数据插入数据库主表dede_archives的完整代码。已经测试过了,完全没有问题。如果你不能成功,可能是你引入的common.inc.php路径和PHPExcel类库的类有问题。如果有任何问题,请检查这两个地方。
代码分析
1)第一步判断问号是否为空,即dopost=exdata&typeid=6&n=test1字符串是否为空。如果该字符串为空,则无需执行任何其他操作。只要退出程序并显示:echo“密码或文件名错误!你没有权利做任何事!”;
仅当if(!空($_GET))条件下,有可能进入插入操作。
然后,获取typeid的值并执行以下操作:
$ typeid = $ _ GET【& amp;#39;typeid & amp#39;];$ dopost = $ _ GET【& amp;#39;do & amp#39;];因为在判断密码时会将数据插入到数据库表中,所以有必要在这里获取do的值,但为什么要在这里一起获取column id的值呢?因为这里基本上不到最后一步是用不到的,为什么不等到用到呢?如果密码错误或其他原因,则不能插入。那不是白白得到$typeid的值。从代码优化的角度来看,这不是最优的。但是,请注意,$GET的数组将在下面操作,所以为了安全起见,您应该先在这个大位置获取列id的值,以确保您以后不会出错。当然,如果你正在发展,你可以
然后,判断密码是否正确,即($ dopost = =“ex data“)是否为真。如果是真的,说明我们在浏览器地址栏输入的密码是正确的;否则,就是错误的。如果出现错误,请退出程序,不做任何操作。
如果正确,则获得n的值,并且文件excel的文件名为$inputFileName。
然后,通过PHPExcel类从excel文件中获取的数据保存在数组$sheetData中。
2)判断要插入的数据是否已经存在于表dede_addonshop中。
查询附表dede_addonshop中的字段bio2和bio1,并将查询到的一维数组放入二维数组$ rowall中。
因为,在将一条数据插入到梦想编织系统后,实际上是在梦想编织的主表、附加表和微表中输入插入操作。因此,在插入之前,需要判断插入的数据是否已经存在于这三个表中。如果已经存在,不要进入插入操作。
3)插入数据库表时最大数据id的确定
在将数据库插入主表、附加表或微表之前,需要判断此时主表或附加表或微表中最大的id,找出这个id,并进入比较:$ id = max($ aid,$arcid,$ tinyid);
经过比较后,获得的$id的值最大。获得这个最大的$id后,基本上可以在这个$id上添加一个$id。例如,当前表中最大的id是9,因此当我们插入数据时,对应的id值从10开始非常重要。如果没有做出这种判断,原始数据将被覆盖。
3)遍历数组$sheetData以插入数据
因为PHPExcel获取的数据存储在$sheetData的二维数据中,类似于array(array(‘a‘,‘b‘)和array(‘b‘,‘c‘)),所以我们遍历这个数组,然后将这个数组中的数据插入Dreamweaver的主表、微表和附加表中。
请注意,$id = $id+1。这行代码为什么要做这行代码?因为,如果没有这行代码,id的值在插入数据时总是相同的,例如,$id=9,它总是9,这是不可能的,因为网站中每篇文章的id都是不同的。如果都一样,网站中可能只显示一个数据。
这几篇文章你可能也喜欢:
- Dede:字段名=位置如何去掉最后一个大于号?
- dede如何按ID排序(由decode使用)
- 如何在dede中调用文章属性的名称
- dede中第一次登录密码错误(dede忘记登录密码)怎么办?
- dede如何添加自定义属性?
本文由主机参考刊发,转载请注明:DEDE如何将excel数据批量导入后台(devexpress导入excel)? https://zhujicankao.com/108832.html
评论前必须登录!
注册