dedecms后臺(tái)增加php導(dǎo)出excel功能實(shí)現(xiàn)辦法
不少朋友希望織夢的后臺(tái)有導(dǎo)出后臺(tái)的文章或自定義模型中的數(shù)據(jù)到excel的功能,我也在網(wǎng)絡(luò)上找了一番,發(fā)現(xiàn)文章不少,但是功能有缺陷,一般缺陷就是到處后數(shù)據(jù)出現(xiàn)亂碼,這是個(gè)比較麻煩的小問題,整體功能實(shí)現(xiàn)了,但是亂碼卻嚴(yán)重影響我們的使用,如何處理和完善織夢后臺(tái)數(shù)據(jù)導(dǎo)出到excel,而且不亂碼呢?下面361源碼給大家整理出了一套比較適合的方法,分享給大家。
在后臺(tái)目錄創(chuàng)建一個(gè)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');
加入導(dǎo)出到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源碼詳細(xì)給出上段代碼的解釋:
1.輸出列名數(shù)組,并轉(zhuǎn)碼
public function addHeader($arr){ foreach($arr as $headVal){ $headVal = $this->charset($headVal); $this->head .= "{$headVal}\t "; } $this->head .= "\n"; }
2.輸出導(dǎo)出內(nèi)容數(shù)組,并轉(zhuǎn)碼
public function addBody($arr){ foreach($arr as $arrBody){ foreach($arrBody as $bodyVal){ $bodyVal = $this->charset($bodyVal); $this->body .= "{$bodyVal}\t "; } $this->body .= "\n"; } }
3.設(shè)置header頭部信息和導(dǎo)出到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.轉(zhuǎn)碼,這里不用iconv函數(shù),有可能會(huì)與gd沖突導(dǎo)致輸出空白。用
public function charset($string){ return mb_convert_encoding($string,'GBK','auto'); }
5.調(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();
最后在后臺(tái)添加導(dǎo)出到excel代碼:
找到后臺(tái)目錄下的templets目錄,下面有個(gè)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\">導(dǎo)出到excel</a>\r\n"; ?>
$channelid就是你的模型id,根據(jù)你導(dǎo)出的表填寫。填寫完之后打開后臺(tái)欄目列表就出現(xiàn)導(dǎo)出按鈕
到這里二次開發(fā)織夢后臺(tái)導(dǎo)出數(shù)據(jù)到excel的功能就完成了,有需求的朋友,去按照上面操作思路和步驟嘗試,注意操作前做好備份。
以上就是dedecms后臺(tái)增加php導(dǎo)出excel功能實(shí)現(xiàn)辦法的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)和解決疑問有所幫助,相關(guān)文章:
-
帝國CMS是什么程序 帝國CMS是一套開源的靜態(tài)頁面程序,憑借超高的擴(kuò)展性,很多知名的新聞?wù)军c(diǎn)、行業(yè)站點(diǎn)都是應(yīng)用的帝國CMS后端。因?yàn)榈蹏鳦MS和dedecms一樣都是生成靜態(tài)頁面的,所以非常利于...
-
域名解析DNS分為顯性URL和隱形URL,顯性URL和隱形URL有什么區(qū)別?隱形URL和顯性URL哪個(gè)更有利于SEO?顯性URL相當(dāng)于域名了302重定向,隱形URL使用iframe框架技術(shù)隱藏真實(shí)目標(biāo)地址,顯性URL更有利于...
-
在常見的CMS系統(tǒng)中,我對(duì)dedecms算是比較熟悉的,自己網(wǎng)站用的也是這個(gè)系統(tǒng)。系統(tǒng)功能強(qiáng)大使用靈活,相信這也是它受到大多數(shù)中小站長青睞的原因。 再好的系統(tǒng)也有照顧不周的地方,很多站...
-
第一次使用的插件是 pdfobject.js 百度網(wǎng)盤下載地址:http://pan.baidu.com/s/1kUPhYdT 加載 script src=/style/js/pdfobject.js /script script type=text/javascript window.onload = function (){ var success = new PDFObject({ url: pdf文件地...
-
網(wǎng)上有一種方法是copy+unlink來移動(dòng)文件,但是遇到大文件時(shí)會(huì)消耗大量時(shí)間,對(duì)性能不怎么友好,可以使用rename()來移動(dòng)文件,速度非???關(guān)于rename()函數(shù) bool rename ( string $oldname , string $newname...
-
基于我們公司可選的幾種推廣方式: 一、關(guān)鍵詞優(yōu)化排名推廣(推薦) 指定關(guān)鍵詞推廣,按天付費(fèi),推廣我們業(yè)務(wù)中最重要的一些關(guān)鍵詞,達(dá)到百度首頁才收費(fèi),大概一個(gè)關(guān)鍵詞10元/天左右。...
-
插件介紹 wordpress程序網(wǎng)站在發(fā)布文章時(shí)可以給每一片文章添加與之相關(guān)的TAG標(biāo)簽,對(duì)于TAG標(biāo)簽可以生成很多頁面,增加搜索引擎對(duì)內(nèi)容的抓取量。 WP Auto Keywords插件就是一款能自動(dòng)給文章添加...
-
5.7 生成列表頁 改動(dòng) include/arc.listview.class.php 1.先設(shè)置 關(guān)閉副欄目(在系統(tǒng)----系統(tǒng)基本參數(shù)性能選項(xiàng)里) 2.一般網(wǎng)站不需要 欄目交叉 交叉 所以 找到94行注釋掉: //獲得交叉欄目ID /*if($this-Type...
-
使用preg_replace將刪除所有空白(包括制表符等) $string = user na me $string = preg_replace(/\s+/, , $string); echo $string; // username preg_replace(/\s/u, ,$string) u (PCRE8) 此修正符打開一個(gè)與perl不兼容的附加功能. 模式...
-
1、公共相同部分用引入1個(gè)靜態(tài)文件方式,不解析 2、arclist標(biāo)簽進(jìn)來不使用屬性flag、不使用自定義字段addfields、不使用隨機(jī)、相同部分用引入1個(gè)靜態(tài)文件方式,不解析 3、tag標(biāo)簽或者關(guān)鍵詞內(nèi)鏈...