欢迎来到酱油妹!织梦模板,dede模板下载,织梦cms模板,免费网站模板下载站

酱油妹

织梦CMS批量导入excel数据到后台文章软件的开发教材

企业模板

对于一些企业网站或者淘宝客类网站经常会需要将一些excel的数据批量导入到网站,通过批量导入来节省时间而不是从网站后台一条一条的录入加数据。本教材就是以把excel数据导入到织梦DEDE软件(织梦DEDE)为例子进行批量数据导入的开发,假设把excel数据导入到织梦DEDE主表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");
引入织梦DEDE软件的公共文件common.inc.php,为啥要引入这个文件,大家在插入数据库表前,首页要连接网站的数据库,如果不连接将无法插入数据库数据。要注意,引入文件的路径要改成您我们的,因为,我把织梦DEDE软件安装在了织梦DEDE里面,所以,路径中有这个目录名称织梦DEDE,如果您安装在根目录的话就去掉这个路径。
设置错误报告、设置时区、设置程序运行时间,当然,这个运行时间可以不设置、设置PHPExcel类的类尾货路径,然后,引入IOFactory.php文件,这个文件是最重要的,本功能就是通过这个文件来处理的,这几个设置代码如下:这些代码全是PHPExcel类里面供应的,所以,这里不需要多讲解。
2) 开发插入数据代码:
为了讲解方法,大家将直接以这种形式来插入数据:https://www.jiangyoumei.com/excelinsert.php?dopost=exdata&typeid=6&n=test1
表示通过文件excelinert.php插入excel里面的名称为test1的里面的数据,把这些数据插入到织梦DEDE数据库表dede_archvies里面,栏目id为6的表中,其中,dopost=exdata表示插入数据口令,因为,作一个判断的话,那什么人也能插入到您的数据库表里面数据了,这是非常可怕的,就像一个网站没有后台一样,这是不是非常可能谁都可以进入网站后台里面,同样的,如果不加这个口令的话,谁都可以插入数据,这是不安全的。
所以,在插入数据前先通过$GET超级数组获取到typeid、do和n的值,然后,进行对比看看有没有权限进行插入数据库操作,第一个判断应当是判断口令是不是正确,如果这个都不正确的话,就不再向下操作了。
为了讲解便捷,下面供应excelinsert.php开发完整的代码:

header("Content-type:text/html;charset=utf8");require_once('/../织梦DEDE/include/common.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']."厂商为:".$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 ($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:;');}


希望以上内容可以解决您的问题!
如有其他问题欢迎大家一起交流学习!
作者:酱油妹 来源:互联网 关注: 时间:2018-10-01 08:26
版权声明:凡注明来源为www.jiangyoumei.com的均为本站原创,转载请注明来源。
本文网址:http://www.jiangyoumei.com/jiaocheng/kaifa/20190902/2707.html
►凡本站提供教程均已验证教程的准确性。
►为提高用户在织梦后台添加栏目的灵活性(可随意添加/删除栏目),并保持(管理后台添加/删除栏目)与前端网站栏目的一致,本站模板中栏目均未固定,用户直接搜索typeid=''并替换''中的数字为所需栏目id即可。
►本站提供各种类型织梦模板!希望在这里找到喜欢的。下载本站模板,用户直接替换相关文字和图片即可。
►本站仅提供织梦模板即(DEDE模板),(除另外说明)均不带织梦安装程序及数据,用户直接覆盖默认模板即可。
►本站所有资源(包括源码、模板、插件等)仅供学习与参考,请勿用于商业用途。
►如有其他问题,请加网站客服QQ(375750496)进行交流。
相关织梦教程
在线客服

织梦模板 整站模板 新手教程 使用技巧