0712-2888027 189-8648-0214
微信公众号

孝感风信网络科技有限公司微信公众号

当前位置:主页 > 技术支持 > DedeCMS > dedecms后台增加php导出到excel功能不出现乱码

dedecms后台增加php导出到excel功能不出现乱码

时间:2024-04-25来源:风信官网 点击: 615次

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

方法/步骤

  1. 在后台目录创建一个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');

    dede织梦后台增加php导出到excel功能不出现乱码
  2. 加入导出到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');    

       } 

    dede织梦后台增加php导出到excel功能不出现乱码
  3. 代码解释:

    1.输出列名数组,并转码

    public function addHeader($arr){        

      foreach($arr as $headVal){            

    $headVal = $this->charset($headVal);             

    $this->head .= "{$headVal}\t ";        

    }         

    $this->head .= "\n";     

    dede织梦后台增加php导出到excel功能不出现乱码
  4. 2.输出导出内容数组,并转码

    public function addBody($arr){         

      foreach($arr as $arrBody){             

    foreach($arrBody as $bodyVal){                 

    $bodyVal = $this->charset($bodyVal);                 

    $this->body .= "{$bodyVal}\t ";             

    }             

    $this->body .= "\n";        

    }     

    dede织梦后台增加php导出到excel功能不出现乱码
  5. 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;     

    dede织梦后台增加php导出到excel功能不出现乱码
  6. 4.转码,这里不用iconv函数,有可能会与gd冲突导致输出空白。用

     public function charset($string){         

    return mb_convert_encoding($string,'GBK','auto');    

       } 

    dede织梦后台增加php导出到excel功能不出现乱码
  7. 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(); 

    dede织梦后台增加php导出到excel功能不出现乱码
  8. 后天添加导出到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,根据你导出的表填写。填写完之后打开后台栏目列表就出现导出按钮

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

注意事项

  • 转码问题,根据自己的实际情况
  • 导出字段,多表或自定义模型的表可以通过left join
栏目列表
推荐内容
热点内容
展开