DEDE怎么批量導入excel數據到后臺

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()-&gt;toArray(null,true,true,true); ????????????????$rowarr=array(); ????????????????$dsql-&gt;Execute('all',"select?bio2,bio1?from?`dede_addonshop`"); ????????????????while?($rowall?=?$dsql-&gt;GetArray('all'))?{ ??????????????????????$rowarr[]=$rowall; ????????????????} foreach?($sheetData?as?$v)?{ ????foreach?($rowarr?as?$vt)?{ ????????if(in_array($v['B'],$vt)&amp;&amp;$v['A']==$vt['bio1']){ ????????????echo?"貨號為:".$v['B']."<br>廠商為:".$v['A']."<br>的數據已在表中,請在excel文件里面刪除這一條后再添加!"; ????????????exit; ????????} ????} } ????????????????//附加表插入數據前處理 ????????????????$row?=?$dsql-&gt;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-&gt;GetOne("select?id?from?`dede_archives`?order?by?id?desc"); ????????????????if(!empty($arcrow)){ ????????????????????$arcid?=?$arcrow['id']; ????????????????}else{ ????????????????????$arcid?=?0; ????????????????} ???????????????//微表插入數據前處理 ????????????????$tinyrow?=?$dsql-&gt;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?ExecuteNoneQuery($arcquery); ????????????????????//保存到附近加表 ????????????????????$query?=?"INSERT?INTO?`dede_addonshop`(aid,typeid,$fields) ????????????????????VALUES?('$id','$typeid'{$fieldvalue});"; ????????????????????$dsql-&gt;ExecuteNoneQuery($query); ????????????????????$fieldvalue?=?''; ????????????????????//保存到微表 ????????????????????$tinyquery?=?"INSERT?INTO?`dede_arctiny`(id,typeid,channel,mid,senddate)VALUES?('$id','$typeid','6','1','$senddate');"; ????????????????????$dsql-&gt;ExecuteNoneQuery($tinyquery); ?????????????????} ????????$num?=?count($sheetData)-2; ????????ShowMsg("恭喜,成功插入???".$num."???條數據!",'javascript:;'); ??????} ????} }else{ ????echo?"密碼或文件名錯誤!您無權做任何操作!"; } ?&gt;

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享