主页 > 网站建设 > 建站知识 > dede织梦后台增加php导出到excel功能不出现乱码

dede织梦后台增加php导出到excel功能不出现乱码

POST TIME:2017-11-12 23:54

dede织梦系统怎样导出后台的文章或自定义模型中的数据到excel,并且不出现乱码

在后台目录创建一个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.输出列名数组,并转码

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');

}

7.调用方法;

$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">&nbsp;删除属性&nbsp;</a>

在后面加一段代码

<?php if($channelid==1) echo " <a href=\&;toexcel.php\&; class=\&;coolbg\&; target=\&;_blank\&;>导出到excel</a>\r\n"; ?>

$channelid就是你的模型id,根据你导出的表填写。填写完之后打开后台栏目列表就出现导出按钮




上一篇:Dedecms数据库结构表名:dede_addonarticle

下一篇:织梦dedecms后台登录提示Call to undefined function get

收缩
  • 微信客服
  • 微信二维码
  • 电话咨询

  • 400-1100-266