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

来源:脚本之家  责任编辑:小易  

最爱二次元:一个分享高质量动漫美图的公众号!超高清壁纸的话,网络上有很多,但是对于高要求高质量超高清的我来说,10张图中有1张值得收藏的就不错了!我不知道你要找的是电脑壁纸还是手机壁纸,手机二次元动漫壁纸的话,我想我们最爱二次元头条号可以满足你的需求!最爱二次元系列美图大致分为《最爱二次元美女系列》、《最爱二次元帅哥系列》、《最爱二次元头像系列》、《最爱二次元风景系列》、《最爱二次元海贼王系列》、《最爱二次元综合系列》等等,最爱二次元头条号上已经更新了非常多的二次元动漫美图,你可以去看看我们最爱二次元的头条号,或许那里有你想要的二次元动漫美图!希望可以帮助到你,谢谢!下面分享几张大白收藏已久的

对于一些企业网站或者淘宝客类网站经常会需要将一些excel的数据批量导入到网站,通过批量导入来节省时间而不是从网站后台一条一条的录入加数据。本教程就是以把excel数据导入到织梦系统(dedecms)为例子进行批量数据导入的开发,假设把excel数据导入到织梦主表dede_archives(还有微表和附加表,这里就用主表代表这三个表)里面。

大司马——我的梦想是开一家真皮网咖,本名韩金龙,是斗鱼直播平台旗下的一名签约主播。主播的内容当然是英雄联盟。直播时间段固定在每天下午三点到晚上八点,周三固定休息。其他时间段没特殊情况一般都会播。你是李时珍的皮,一生之敌愣头青!非常喜欢马老师的直播,幽默。马老师的贴吧微博都可以关注一波,时不时会有些小福利哟~~

批量导入excel数据原理:通过查询excel,把数据一条一条的读取出来,然后,通过我们开发的php程序把数据导入到表里面。

1.吴京项目:武术荣誉:1984年北京武术比赛拳术冠军。1986年全国武术比赛拳、枪、刀冠军1987年全国武术比赛拳、枪、刀冠军1989年全国武术比赛拳、枪、刀、对练冠军1991年全国武术赛枪术、对练冠军1994年全国武术比赛精英赛,枪术.对练冠军被誉为“功夫小子”的他从1995年就开始接拍电视剧和电影,其引路人便是《少林寺》以及《少林武王》的导演张鑫炎,而吴京的武术教练也就是李连杰的教练吴彬。随后他主演了《功夫小子闯情关》《太极宗师》《倩女幽魂》《金蚕丝雨》《凡人杨大头》《蜀山传》《乱世桃花》《壮志凌云》《走出硝烟的女神》《策马啸西风》等影视作品2.宋仲基宋仲基,出道前是短道速滑运动员。3.

通过上面的原理我们知道,我们可以把批量导入excel数据分为两部分,一部分是开发出从excel读取数据的程序,另一部分是开发出把读取出来的数据插入到数据库表dede_archives里面。

铲屎官们在撸狗的时候,是不是经常发现汪星人会把白白的大肚子展现在你面前?对于狗狗来说,肚子是它的一个很重要的部位,也是个要害,很多狗狗会露出自己的肚皮来向铲屎官示好。一般的铲屎官都认为狗狗这样是在撒娇、求摸,但其实狗狗翻肚皮还有其他原因。1.表示在乎狗狗除了会用激烈的摇尾巴方式来表示自己喜欢一个人,它们还会张嘴吐舌头开心的看着你,再有就是把自己的肚子露出来。这时候它们就是在说:我很在乎你、喜欢你、信任你哦。2.表示臣服铲屎官在汪星人眼中就像王一样的存在,它们把你当做自己的老大。在想要向你示弱,表示投降臣服的时候,狗狗也会翻起肚子,不过这个时候它们一般不敢看你的眼睛,而且尾巴会卷向肚子方向。3.

从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('/../dedecms/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']."<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 "密码或文件名错误!您无权做任何操作!"; } ?>

以上就是完整的把excel里面数据插入到数据库主表dede_archives里面的代码,是经过实际测试的完全没有问题,如果你做出来不行的话,可能是您引入的common.inc.php路径和引入的PHPExcel类库Classess类有问题,若有问题请检查这两个地方。 

代码分析

1)第一步先判断问号后面是不是为空,即dopost=exdata&typeid=6&n=test1字符串是否为空,如果这个字符串都是空的话,其它,就不用操作了,直接通过出程序,显示:echo "密码或文件名错误!您无权做任何操作!";

只有当if(!empty($_GET))条件成立时,才有可能进入插入操作。

然后,获取typeid和do的值:

$typeid = $_GET['typeid']; $dopost = $_GET['do'];

因为下面要对要插入到数据库表中数据时还要进行口令的判断,所以,这里获取do的值是必须的,但是,这里为什么一起要获取栏目id的值呢?因为,这里基本上要到最后一步才使用,为什么不等到使用时再获取呢?如果密码不对或其它原因的话,不能进行插入操作,那不是白白获取了$typeid的值,从代码优化的角度,这样不是最优的,但是,大家请注意,因为,下面要对获取到的$GET的数组进行操作,所以,为了保险起见,这时大这个地方先获取到栏目id的值,这样可以保证不会在后面出错,当然,如果您在开发时,能保证不会出错可以在使用$typeid时再获取也可以。

然后,判断口令是否正确,即if($dopost=="exdata")是否为真,若为真说明我们在浏览器地址栏输入的口令就是正确的,否则,就是错误的,如果出错出退出程序不做任何操作。

如果正确,则获取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')),所以,在遍历这个数组,然后,把这个数组里面的数据插入到织梦的主表、微表和附加表里面。

这里要注意$id = $id+1,这行代码为什么要做这行代码,是因为,如果没有这行代码那么,在插入数据时id的值一直是同一个,例如,$id=9,这样一直是9,这是不可能的,因为,一个网站面的每一篇文章的id都是不同的,如果全一样的话,可能网站里面显示数据就只有一条了,其它的全部被覆盖掉了。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

谁有织梦dedecms批量导入excel表文章内容插件

那个很简单啊,这种文章数据批量导入录入的工作你去使用专门的脚本工具软件来完成,只需手工修改设置一次,脚本工具就能自动批量执行所有的。我们现在用的就是“极速点击虎”这种脚本工具软件,支持自动化实现这些批量录入操作,批量自动点击按键完成。

极速点击虎是具有图形化界面操作,简单好用,而且支持自动录入输入、自动提取导入,自动点击按键功能。

使用极速点击虎软件,不需你有复杂的电脑知识,你只需在极速点击虎软件里依次添加自动点击、延时停顿、自动按键模拟、文件提取录入这几个任务,就能做到一些常用的批量自动化应用,解放你劳累的双手。

如何用dede向数据库导入excel文件,请各位帮个忙啊。好急啊。。。。。。

方法很多,不过建议你先看看mysql的开发文档,里面写的很详细的,如果你懒得看,可以看下面的

1.有个软件PHP Excel Parser Pro v4.2可以,你可以在这里下载:

2.可将Excel存成csv格式。然后通过phpmyadmin倒入mysql

3.先导入Access中,再弄到MySQL中,或者自己写程序读出excel中数据然后存入mysql中

4.还有一个比较笨的手工方法,就是先利用excel生成sql语句,然后再到mysql中运行,这种方法适用于excel表格导入到各类sql数据库:

一、假设你的表格有A、B、C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3

二、在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:

1、增加一列(假设是D列)

2、在第一行的D列,就是D1中输入公式:

=CONCATENATE("insert into table (col1,col2,col3) values ('",A1,"','",B1,"','",C1,"');")

3、此时D1已经生成了如下的sql语句:

insert into table (col1,col2,col3) values ('a','11','33');

4、将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)

5、此时D列已经生成了所有的sql语句

6、把D列复制到一个纯文本文件中,假设为sql.txt

三、把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。

dede 如何批量增加文档关键词维护 能不能调用excel 或word 或txt 中的数据

你可以批量SQL插入嘛,这个快

INSERT INTO `dede_keywords` VALUES('1','晋城','30','1','http://www.0356sh.com/');追答你的文本源是错误的话肯定会错,你在执行过程一般是不会出错的,我不知道你说的出错是什么意思,这个速度我想是按你的意愿最快的,要不就在后台一个一个加吧追问稍微快点,但出错了不好处理

dedecms后台按照栏目分类导出文章到excel表格,这个怎么实现呢,求大侠们帮助下

找到那个表,直接查SQL语句出来

dede模板怎么上传文件到服务器上,比如word,excel等文件,然后用户可以下载,直接下载附件

word,execl打包成rar文件,然后写文章的时候上传成附件即可。至于模板上传通过FTP即可更多追问追答追问你帮我看一下是在哪里,我把图给你了那是从什么地方上传呢?我没有找到上传附件的地方追答发布文章的地方

  • 本文相关:
  • dedecms如何把文章批量设为未审核的办法
  • dede把文章批量设为未审核
  • dedecms使用sql命令批量替换指定字符串的方法
  • dedecms批量写入数据的函数分析
  • dedecms批量替换文章中超链接的方法
  • 批量删除织梦dedecms文档搜索关键词的方法
  • dedecms批量修改文章发布时间的方法
  • dede搬家后路径变化批量替换图片路径避免图片不能正常显示
  • 用数据库批量修改替换dedecms文章标题和内容的步骤分享[图文]
  • dedecms批量删除会员的sql命令
  • 谁有织梦dedecms批量导入excel表文章内容插件
  • 如何用dede向数据库导入excel文件,请各位帮个忙啊。好急啊。。。。。。
  • dede 如何批量增加文档关键词维护 能不能调用excel 或word 或txt 中的数据
  • dedecms后台按照栏目分类导出文章到excel表格,这个怎么实现呢,求大侠们帮助下
  • dede模板怎么上传文件到服务器上,比如word,excel等文件,然后用户可以下载,直接下载附件
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved