织梦DedeCMS会员管理添加导出Excel功能教程
本教程将详细介绍如何在织梦DedeCMS后台会员管理页面添加一键导出Excel功能,方便管理员快速导出会员数据。
第一步:修改会员管理模板文件
打开织梦后台模板文件,路径为:/dede/templets/member_main.htm。在全选按钮附近添加导出Excel按钮的HTML代码。
在合适位置插入以下代码:
<a href="toexcel.php" class="coolbg" target="_blank">导出到excel</a>
第二步:创建导出Excel处理文件
在织梦后台目录/dede/文件夹下新建一个名为toexcel.php的文件。
toexcel.php的完整代码如下:
<?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');
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){
$this->body .= "{$bodyVal}\t ";
}
$this->body .= "\n";
}
}
//设置header头部信息和导出到excel内容,并输出到浏览器
public function downLoad($filename=''){
if(!$filename)
$filename = date('YmdHis',time()).'.xls';
ob_end_clean();
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;
}
//转码,这里不用iconv函数,有可能会与gd冲突导致输出空白
public function charset($string){
return mb_convert_encoding($string,'GBK','auto');
}
}
$excel = new Excel();
$excel->addHeader(array('id','用户类型','用户帐号','密码','用户昵称','性别','帐号有效期','级别','email','积分','添加时间','登录时间','登录IP'));
global $dsql;
$sql="select `mid`,`mtype`,`userid`,`pwd`,`uname`,`sex`,`exptime`,`rank`,`email`,`scores`,`jointime`,`logintime`,`loginip` from `dede_member`";
$dsql->SetQuery($sql);
$dsql->Execute();
while($row = $dsql->GetArray()){
//将添加时间和登录时间转化为Y-m-d H:i:s格式
foreach($row as $key=>$val){
if($key=='jointime' || $key=='logintime'){
$row[$key]=date("Y-m-d H:i:s",$val);
}
}
$list[]=$row;
}
unset($row);
$excel->addBody($list);
$excel->downLoad();
?>
功能说明
该功能通过自定义Excel类实现数据导出,支持设置表头、添加数据内容,并自动将时间戳转换为可读的日期格式。导出的Excel文件包含会员ID、用户类型、帐号、密码、昵称、性别、有效期、级别、邮箱、积分、添加时间、登录时间和登录IP等字段。
注意:代码中注释了部分转码操作,实际测试发现直接导出即可正常显示中文,无需额外转码处理。如果遇到乱码问题,可根据实际编码环境调整charset方法中的编码参数。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
