不少朋友希望织梦的后台有导出后台的文章或自定义模型中的数据到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功能实现办法的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持武林网。新闻热点
疑难解答