不少朋友希望織夢的后臺有導出后臺的文章或自定義模型中的數據到excel的功能,361源碼也在網絡上找了一番,發現文章不少,但是功能有缺陷,一般缺陷就是到處后數據出現亂碼,這是個比較麻煩的小問題,整體功能實現了,但是亂碼卻嚴重影響我們的使用,如何處理和完善織夢后臺數據導出到excel,而且不亂碼呢?下面361源碼給大家整理出了一套比較適合的方法,分享給大家。
在后臺目錄創建一個php文件toexcel.php,在最上面加入代碼;
require_once(dirname(__FILE__).'/config.php');require_once(DEDEINC.'/typelink.class.php');require_once(DEDEINC.'/datalistcp.class.php');require_once(DEDEADMIN.'/inc/inc_list_functions.php');
加入導出到excel類:
class Excel{ private $head; private $body; public function addHeader($arr){ foreach($arr as $headVal){ $headVal = $this->charset($headVal); $this->head .= "{$headVal}/t "; } $this->head .= "/n"; } public function addBody($arr){ foreach($arr as $arrBody){ foreach($arrBody as $bodyVal){ $bodyVal = $this->charset($bodyVal); $this->body .= "{$bodyVal}/t "; } $this->body .= "/n"; } } public function downLoad($filename=''){ if(!$filename) $filename = date('YmdHis',time()).'.xls'; header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=$filename"); header("Content-Type:charset=gb2312"); if($this->head) echo $this->head; echo $this->body; } public function charset($string){ return mb_convert_encoding($string,'GBK','auto'); }下面361源碼詳細給出上段代碼的解釋:
1.輸出列名數組,并轉碼
public function addHeader($arr){ foreach($arr as $headVal){ $headVal = $this->charset($headVal); $this->head .= "{$headVal}/t "; } $this->head .= "/n"; }2.輸出導出內容數組,并轉碼
public function addBody($arr){ foreach($arr as $arrBody){ foreach($arrBody as $bodyVal){ $bodyVal = $this->charset($bodyVal); $this->body .= "{$bodyVal}/t "; } $this->body .= "/n"; } }3.設置header頭部信息和導出到excel內容,并輸出到瀏覽器
public function downLoad($filename=''){ if(!$filename) $filename = date('YmdHis',time()).'.xls'; header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=$filename"); header("Content-Type:charset=gb2312"); if($this->head) echo $this->head; echo $this->body; }4.轉碼,這里不用iconv函數,有可能會與gd沖突導致輸出空白。用
public function charset($string){ return mb_convert_encoding($string,'GBK','auto'); }5.調用方法:
$excel = new Excel(); $excel->addHeader(array('列一','列二','列三','列四')); global $dsql; $sql="select 列一字段,列二字段,列三字段,列四字段 from 表名"; $dsql->SetQuery($sql);$dsql->Execute();while($row = $dsql->GetArray()){$list[]=$row;}unset($row);$excel->addBody($list); $excel->downLoad();最后在后臺添加導出到excel代碼:
找到后臺目錄下的templets目錄,下面有個content_list.htm文件,
找到
<a href="javascript:;" onClick="cAtts('attsDel',event,this)" class="coolbg"> 刪除屬性 </a>在后面加一段代碼
<?php if($channelid==1) echo " <a href=/"toexcel.php/" class=/"coolbg/" target=/"_blank/">導出到excel</a>/r/n"; ?>
$channelid就是你的模型id,根據你導出的表填寫。填寫完之后打開后臺欄目列表就出現導出按鈕
到這里二次開發織夢后臺導出數據到excel的功能就完成了,有需求的朋友,去按照上面操作思路和步驟嘗試,注意操作前做好備份。
以上就是dedecms后臺增加php導出excel功能實現辦法的全部內容,希望對大家的學習和解決疑問有所幫助,也希望大家多多支持武林網。新聞熱點
疑難解答