DEDE怎么批量导入excel数据到后台 - 广告联盟评测网
  1. 广告联盟评测网 > 流量运营 >

DEDE怎么批量导入excel数据到后台

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");

引入织梦系统的公共文件common.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(&#39;/../dedecms/include/common.inc.php&#39;); error_reporting(E_ALL); set_time_limit(0); date_default_timezone_set(&#39;Europe/London&#39;); /** Include path **/ set_include_path(get_include_path() . PATH_SEPARATOR . &#39;../../../Classes/&#39;); /** PHPExcel_IOFactory */ include &#39;PHPExcel/IOFactory.php&#39;; if(!empty($_GET)){ $typeid = $_GET[&#39;typeid&#39;]; $dopost = $_GET[&#39;do&#39;]; if($dopost == "exdata"){ if(!empty($_GET[&#39;n&#39;])){ $inputFileName = &#39;./&#39;.$_GET[&#39;n&#39;].&#39;.xlsx&#39;; $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); $rowarr=array(); $dsql->Execute(&#39;all&#39;,"select bio2,bio1 from `dede_addonshop`"); while ($rowall = $dsql->GetArray(&#39;all&#39;)) { $rowarr[]=$rowall; } foreach ($sheetData as $v) { foreach ($rowarr as $vt) { if(in_array($v[&#39;B&#39;],$vt)&&$v[&#39;A&#39;]==$vt[&#39;bio1&#39;]){ echo "货号为:".$v[&#39;B&#39;]."<br>厂商为:".$v[&#39;A&#39;]."<br>的数据已在表中,请在excel文件里面删除这一条后再添加!"; exit; } } } //附加表插入数据前处理 $row = $dsql->GetOne("select aid,bio2 from `dede_addonshop` order by aid desc"); if(!empty($row)){ $aid = $row[&#39;aid&#39;]; $bio2 = $row[&#39;bio2&#39;]; }else{ $aid = 0; $bio2 = &#39;&#39;; } //处理重复问题 if($bio2==$sheetData[count($sheetData)][&#39;B&#39;]){ ShowMsg("不能重复添加内容",&#39;javascript:;&#39;); exit; } //主表插入数据前处理 $arcrow = $dsql->GetOne("select id from `dede_archives` order by id desc"); if(!empty($arcrow)){ $arcid = $arcrow[&#39;id&#39;]; }else{ $arcid = 0; } //微表插入数据前处理 $tinyrow = $dsql->GetOne("select id from `dede_arctiny` order by id desc"); if(!empty($tinyrow)){ $tinyid = $tinyrow[&#39;id&#39;]; }else{ $tinyid = 0; } //找出最大的id $id = max($aid,$arcid,$tinyid); $alphalpha = array(&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,&#39;I&#39;,&#39;J&#39;,&#39;K&#39;,&#39;L&#39;,&#39;M&#39;,&#39;N&#39;,&#39;O&#39;,&#39;P&#39;,&#39;Q&#39;,&#39;R&#39;,&#39;S&#39;,&#39;T&#39;,&#39;U&#39;,&#39;V&#39;,&#39;W&#39;,&#39;X&#39;,&#39;Y&#39;,&#39;Z&#39;,&#39;AA&#39;,&#39;AB&#39;,&#39;AC&#39;,&#39;AD&#39;,&#39;AE&#39;,&#39;AF&#39;,&#39;AG&#39;,&#39;AH&#39;,&#39;AI&#39;,&#39;AJ&#39;,&#39;AK&#39;,&#39;AL&#39;,&#39;AM&#39;,&#39;AN&#39;,&#39;AO&#39;,&#39;AP&#39;,&#39;AQ&#39;,&#39;AR&#39;,&#39;AS&#39;,&#39;AT&#39;,&#39;AU&#39;,&#39;AV&#39;,&#39;AW&#39;,&#39;AX&#39;,&#39;AY&#39;,&#39;AZ&#39;); //字段数量 $fieldnum = count($sheetData[1]); $fields = $fieldvalue = &#39;&#39;; for ($i=0; $i < $fieldnum; $i++) { $fields .= $sheetData[1][$alphalpha[$i]]. &#39;,&#39;; } $fields = substr($fields, 0,-1); //遍历数组 foreach ($sheetData as $value) { $pubdate = GetMkTime(GetDateTimeMk(time())); $click = mt_rand(50, 200); if($value[&#39;A&#39;]==&#39;bio1&#39;|$value[&#39;A&#39;]==&#39;厂商&#39;){ continue; } $id = $id+1; //获取字段值$value[&#39;A&#39;]; for ($i=0; $i < $fieldnum; $i++) { $fieldvalue .= " ,&#39;".$value[$alphalpha[$i]]."&#39; "; } //标题 $C = trim($value[&#39;C&#39;]); //保存到主表 $senddate = time(); $arcquery = "INSERT INTO `dede_archives`(id,typeid,title,mid,channel,pubdate,senddate,click,ismake)VALUES (&#39;$id&#39;,&#39;$typeid&#39;,&#39;$C&#39;,&#39;1&#39;,&#39;6&#39;,&#39;$pubdate&#39;,&#39;$senddate&#39;,&#39;$click&#39;,&#39;-1&#39;);"; $dsql->ExecuteNoneQuery($arcquery); //保存到附近加表 $query = "INSERT INTO `dede_addonshop`(aid,typeid,$fields) VALUES (&#39;$id&#39;,&#39;$typeid&#39;{$fieldvalue});"; $dsql->ExecuteNoneQuery($query); $fieldvalue = &#39;&#39;; //保存到微表 $tinyquery = "INSERT INTO `dede_arctiny`(id,typeid,channel,mid,senddate)VALUES (&#39;$id&#39;,&#39;$typeid&#39;,&#39;6&#39;,&#39;1&#39;,&#39;$senddate&#39;);"; $dsql->ExecuteNoneQuery($tinyquery); } $num = count($sheetData)-2; ShowMsg("恭喜,成功插入 ".$num." 条数据!",&#39;javascript:;&#39;); } } }else{ echo "密码或文件名错误!您无权做任何操作!"; } ?>登录后复制

这篇流量运营《DEDE怎么批量导入excel数据到后台》,目前已阅读次,本文来源于php中文,在2024-09-21发布,该文旨在普及流量运营知识,如果你有任何疑问,请通过网站底部联系方式与我们取得联系

  • 上一篇:如何不用wordpress插件显示文章浏览统计功能
  • 下一篇:织梦软件频道如何判断是本站下载链接后再列出镜像