花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網(wǎng),按 + 收藏我們
登錄 注冊 退出 找回密碼

DEDECMS批量導(dǎo)入excel數(shù)據(jù)到后臺文章系統(tǒng)的開發(fā)教程

時(shí)間: 2018-12-11 08:44 閱讀: 作者:素材無憂網(wǎng)

對于一些企業(yè)網(wǎng)站或者淘寶客類網(wǎng)站經(jīng)常會需要將一些excel的數(shù)據(jù)批量導(dǎo)入到網(wǎng)站,通過批量導(dǎo)入來節(jié)省時(shí)間而不是從網(wǎng)站后臺一條一條的錄入加數(shù)據(jù)。本教程就是以把excel數(shù)據(jù)導(dǎo)入到織夢系統(tǒng)(dedecms)為例子進(jìn)行批量數(shù)據(jù)導(dǎo)入的開發(fā),假設(shè)把excel數(shù)據(jù)導(dǎo)入到織夢主表dede_archives(還有微表和附加表,這里就用主表代表這三個(gè)表)里面。
批量導(dǎo)入excel數(shù)據(jù)原理:通過查詢excel,把數(shù)據(jù)一條一條的讀取出來,然后,通過我們開發(fā)的php程序把數(shù)據(jù)導(dǎo)入到表里面。
通過上面的原理我們知道,我們可以把批量導(dǎo)入excel數(shù)據(jù)分為兩部分,一部分是開發(fā)出從excel讀取數(shù)據(jù)的程序,另一部分是開發(fā)出把讀取出來的數(shù)據(jù)插入到數(shù)據(jù)庫表dede_archives里面。
從excel讀取數(shù)據(jù)程序開發(fā)
其實(shí),這一步有一個(gè)老外已經(jīng)幫我們開發(fā)好了,這個(gè)老外開發(fā)了一套專門讀取excel數(shù)據(jù)表的程序叫PHPExcel類庫。
這個(gè)excel類庫還包括其它的一些功能,這里不一一介紹,您可以下載來看看,這里只對讀取excel進(jìn)行講解。
把讀取出來的數(shù)據(jù)插入到主表dede_archives里面
當(dāng)通過PHPExcel類庫里面提供的類讀取數(shù)據(jù)后,這一步就是把數(shù)據(jù)插入到數(shù)據(jù)庫表里面,所以,這一個(gè)教程的開發(fā)其實(shí)就是在開發(fā)這一部分 ; 把從excel讀取出來的數(shù)據(jù)插入到主表中的程序開發(fā)。
為了講解方便,我們把插入數(shù)據(jù)庫表中的數(shù)據(jù)的文件名叫做excelinert.php ,下面就在這個(gè)文件里面進(jìn)入程序開發(fā),把讀取出來的數(shù)據(jù)插入到數(shù)據(jù)庫表中。


插入數(shù)據(jù)開發(fā)原理
1)開發(fā)前的準(zhǔn)備:
在excelinsert.php里面加入一個(gè)header頭的編碼,目的是為了統(tǒng)一編碼以免出現(xiàn)亂碼:header("Content-type:text/html;charset=utf8");
引入織夢系統(tǒng)的公共文件common.inc.php,為什么要引入這個(gè)文件,我們在插入數(shù)據(jù)庫表前,首頁要連接網(wǎng)站的數(shù)據(jù)庫,如果不連接將無法插入數(shù)據(jù)庫數(shù)據(jù)。要注意,引入文件的路徑要改成您自己的,因?yàn)椋野芽棄粝到y(tǒng)安裝在了dedecms里面,所以,路徑中有這個(gè)目錄名稱dedecms,如果您安裝在根目錄的話就去掉這個(gè)路徑。
設(shè)置錯(cuò)誤報(bào)告、設(shè)置時(shí)區(qū)、設(shè)置程序運(yùn)行時(shí)間,當(dāng)然,這個(gè)運(yùn)行時(shí)間可以不設(shè)置、設(shè)置PHPExcel類的類庫存路徑,然后,引入IOFactory.php文件,這個(gè)文件是最重要的,本功能就是通過這個(gè)文件來處理的,這幾個(gè)設(shè)置代碼如下:
DEDECMS批量導(dǎo)入excel數(shù)據(jù)到后臺文章系統(tǒng)的開發(fā)教程(圖1)
這些代碼全是PHPExcel類里面提供的,所以,這里不用多解釋。
2) 開發(fā)插入數(shù)據(jù)代碼:
為了講解方式,我們將直接以這種形式來插入數(shù)據(jù):https://www.bnxb.com/excelinsert.php?dopost=exdata&typeid=6&n=test1
表示通過文件excelinert.php插入excel里面的名稱為test1的里面的數(shù)據(jù),把這些數(shù)據(jù)插入到織夢數(shù)據(jù)庫表dede_archvies里面,欄目id為6的表中,其中,dopost=exdata表示插入數(shù)據(jù)口令,因?yàn)?,作一個(gè)判斷的話,那什么人也能插入到您的數(shù)據(jù)庫表里面數(shù)據(jù)了,這是非??膳碌?,就像一個(gè)網(wǎng)站沒有后臺一樣,這是不是非??赡苷l都可以進(jìn)入網(wǎng)站后臺里面,同樣的,如果不加這個(gè)口令的話,誰都可以插入數(shù)據(jù),這是不安全的。
所以,在插入數(shù)據(jù)前先通過$GET超級數(shù)組獲取到typeid、do和n的值,然后,進(jìn)行對比看看有沒有權(quán)限進(jìn)行插入數(shù)據(jù)庫操作,第一個(gè)判斷應(yīng)當(dāng)是判斷口令是否正確,如果這個(gè)都不正確的話,就不再向下操作了。
為了講解方便,下面提供excelinsert.php開發(fā)完整的代碼:

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']."
廠商為:".$v['A']."
的數(shù)據(jù)已在表中,請?jiān)趀xcel文件里面刪除這一條后再添加!";

exit;
}

}
}

//附加表插入數(shù)據(jù)前處理

$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 = '';

}

//處理重復(fù)問題

if($bio2==$sheetData[count($sheetData)]['B']){

ShowMsg("不能重復(fù)添加內(nèi)容",'javascript:;');

exit;

}

//主表插入數(shù)據(jù)前處理

$arcrow = $dsql->GetOne("select id from `dede_archives` order by id desc");

if(!empty($arcrow)){

$arcid = $arcrow['id'];

}else{

$arcid = 0;

}

//微表插入數(shù)據(jù)前處理

$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');

//字段數(shù)量

$fieldnum = count($sheetData[1]);

$fields = $fieldvalue = '';

for ($i=0; $i < $fieldnum; $i++) {

$fields .= $sheetData[1][$alphalpha[$i]]. ',';

}

$fields = substr($fields, 0,-1);

//遍歷數(shù)組

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]]."' ";

}

//標(biāo)題

$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."   條數(shù)據(jù)!",'javascript:;');

}

版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!

轉(zhuǎn)載請注明: DEDECMS批量導(dǎo)入excel數(shù)據(jù)到后臺文章系統(tǒng)的開發(fā)教程

標(biāo)簽:  
模板推薦