dede織夢系統(tǒng)怎樣導出后臺的文章或自定義模型中的數(shù)據(jù)到excel,并且不出現(xiàn)亂碼
在后臺目錄創(chuàng)建一個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'); } } |
代碼解釋:
1.輸出列名數(shù)組,并轉碼
public function addHeader($arr){ foreach($arr as $headVal){ $headVal = $this->charset($headVal); $this->head .= "{$headVal}\t "; } $this->head .= "\n"; } |
2.輸出導出內(nèi)容數(shù)組,并轉碼
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內(nèi)容,并輸出到瀏覽器
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函數(shù),有可能會與gd沖突導致輸出空白。用
public function charset($string){ return mb_convert_encoding($string,'GBK','auto'); } |
7.調(diào)用方法;
$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,根據(jù)你導出的表填寫。填寫完之后打開后臺欄目列表就出現(xiàn)導出按鈕
注意事項
轉碼問題,根據(jù)自己的實際情況
導出字段,多表或自定義模型的表可以通過left join
版權聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內(nèi)刪除!謝謝!