所有分类
  • 所有分类
  • 网站模板
  • 设计素材
  • 办公素材
  • 站长素材
  • 软件资源

dedeCMS 织梦后台增加导出内容到excel功能方法 不会乱码

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

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

在后面加一段代码

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

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

注意事项

转码问题,根据自己的实际情况

导出字段,多表或自定义模型的表可以通过left join

织梦cms

感谢您阅读这篇dedeCMS 织梦后台增加导出内容到excel功能方法 不会乱码文章,希望可以帮助您解决使用织梦cms途中的问题,更多相关织梦cms教程关注我们万条网吧。

文章原文链接:https://www.wantiao.net/36107.html,转载请注明出处。
免责声明:本站资源均来自互联网,仅供研究学习使用,禁止违法违规使用,产生法律纠纷本站概不负责!本站信息来源于网络,版权争议与本站无关。如有侵权请邮件与我们联系处理,敬请谅解!
0

评论0

请先

疫情期间优惠活动!原360元包年VIP,现128元;原588元终身VIP,现158元。随着资源不断增多,随时提价!立即查看
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录