下载鸥 > 网站下载 > 开发教程 > 织梦CMS

织梦CMS二次开发批量导入excel数据

329 2021-01-19 17:12:14

收藏

简述

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

织梦CMS二次开发批量导入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) 开发插入数据代码:

为了讲解方式,我们将直接以这种形式来插入数据: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('/../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.'../../../Classes/');
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',"selectbio2,bio1from`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文件里面删除这一条后再添加!";
}
}
}
$row=$dsql->GetOne("selectaid,bio2from`dede_addonshop`orderbyaiddesc");
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("selectidfrom`dede_archives`orderbyiddesc");
if(!empty($arcrow)){
$arcid=$arcrow['id'];
}else{
$arcid=0;
}
$tinyrow=$dsql->GetOne("selectidfrom`dede_arctiny`orderbyiddesc");
if(!empty($tinyrow)){
$tinyid=$tinyrow['id'];
}else{
$tinyid=0;
}
$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="INSERTINTO`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="INSERTINTO`dede_addonshop`(aid,typeid,$fields)
VALUES('$id','$typeid'{$fieldvalue});";
$dsql->ExecuteNoneQuery($query);
$fieldvalue='';
$tinyquery="INSERTINTO`dede_arctiny`(id,typeid,channel,mid,senddate)VALUES('$id','$typeid','6','1','$senddate');";
$dsql->ExecuteNoneQuery($tinyquery);
}
$num=count($sheetData)-2;
ShowMsg("恭喜,成功插入".$num."条数据!",'javascript:;');
}

 

本文地址:https://xzo.com.cn/develop/dede/70.html

有帮助,很赞!

信息来源:精准像素
导出教程 下载word版教程
发表评论 共有条评论
关于织梦CMS


织梦cms是国内最流行的cms程序,操作简单便捷,但安全性低,且数据超过10万后会卡顿,超过20万后效率十分低下,适合入门级用户。

推荐织梦CMS开发教程
织梦CMS与帝国CMS有什么不同?
织梦CMS与帝国CMS有什么不同?

织梦是我用过的第二个CMS,也是最喜欢的CMS之一。他最大的优点有二:1、功能十...

15 80
织梦DEDECMS安全提示怎样调整?
织梦DEDECMS安全提示怎样调整?

织梦后台系统是目前被采用最多的网站CMS,很多SEOer都操作过织梦后台,那么细心...

0 367
织梦CMS搭建网站教程入门
织梦CMS搭建网站教程入门

很久没写建站教程了,今天来教大家用织梦cms来搭建网站。之前用WordPress来搭...

9 687
织梦CMS V5.7网站安全 - 容易被黑客利用的9个漏洞与修复方法介绍
织梦CMS V5.7网站安全 - 容易被黑客利用的9个漏洞与修复方法介绍

很多人都知道织梦并不安全,但具体是怎么个不安全法,存在哪些漏洞呢,我们以5.7...

13 1960
织梦cms批量调整修改文章审核状态原理分析
织梦cms批量调整修改文章审核状态原理分析

织梦cms是一个非常流行的cms程序,其文档数据都是存在MySQL数据表里面的,就默...

0 362
织梦CMS网站安全:SQL注入漏洞修复方式
织梦CMS网站安全:SQL注入漏洞修复方式

织梦cms是新手建站的首选,但企业站一般不建议使用织梦cms程序。其原因一方面...

1 721
dedecms cookies泄漏导致SQL漏洞(article_add.php)解决方案
dedecms cookies泄漏导致SQL漏洞(article_add.php)解决方案

dedecms有不少的漏洞,如果不能妥善处理,极易导致织梦cms网站被黑。今天,我们来...

0 465
dedecms模版SQL注入漏洞(/member/soft_add.php)修复
dedecms模版SQL注入漏洞(/member/soft_add.php)修复

织梦cms存在很多公开的漏洞,如果不进行处理,则容易导致网站被黑、降权、数据...

0 804
推荐插件
帝国cms网站会员登录与退出历史记录日志插件
帝国cms网站会员登录与退出历史记录日志插件

帝国cms默认只有上次登录时间与ip,没有一个记录清单,所以今天,我们分享这个帝...

0 357
帝国cms百度AI图像无损放大api接口对接插件
帝国cms百度AI图像无损放大api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像无损放大的功能。经过...

0 438
帝国cms联想词搜索高级搜索插件下载
帝国cms联想词搜索高级搜索插件下载

帝国CMS自带的搜索功能虽然强大,但也有很强的局限性 -- 必须关键词完全匹配...

0 736
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

0 1274
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 1123
帝国cms多栏目多数据表自动审核推送插件
帝国cms多栏目多数据表自动审核推送插件

本插件基于帝国cms帝国cms每日自动审核插件,在自动审核指定条数信息的基础上...

0 891
帝国cms百度文字识别ocr接口对接插件
帝国cms百度文字识别ocr接口对接插件

许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...

0 452
帝国cms百度AI黑白图像上色api接口对接插件
帝国cms百度AI黑白图像上色api接口对接插件

百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...

0 398
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入