在线客服与您一对一交流
当前位置: 主页 > 行业新闻 > IT技术 >

dedecms后台增加php导出excel功能实现办法

这篇文章主要为大家详细介绍了dedecms后台增加php导出excel功能实现办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。
 

不少朋友希望织梦的后台有导出后台的文章或自定义模型中的数据到excel的功能,我也在网络上找了一番,发现文章不少,但是功能有缺陷,一般缺陷就是到处后数据出现乱码,这是个比较麻烦的小问题,整体功能实现了,但是乱码却严重影响我们的使用,如何处理和完善织梦后台数据导出到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">&nbsp;删除属性&nbsp;</a>

在后面加一段代码

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

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

到这里二次开发织梦后台导出数据到excel的功能就完成了,有需求的朋友,去按照上面操作思路和步骤尝试,注意操作前做好备份。

以上就是dedecms后台增加php导出excel功能实现办法的全部内容,希望对大家的学习和解决疑问有所帮助,

相关文章:

  • 第一次使用的插件是 pdfobject.js 百度网盘下载地址:http://pan.baidu.com/s/1kUPhYdT 加载 script src=/style/js/pdfobject.js /script script type=text/javascript window.onload = function (){ var success = new PDFObject({ url: pdf文件地...

  • 网上有一种方法是copy+unlink来移动文件,但是遇到大文件时会消耗大量时间,对性能不怎么友好,可以使用rename()来移动文件,速度非常快 关于rename()函数 bool rename ( string $oldname , string $newname...

  • 基于我们公司可选的几种推广方式: 一、关键词优化排名推广(推荐) 指定关键词推广,按天付费,推广我们业务中最重要的一些关键词,达到百度首页才收费,大概一个关键词10元/天左右。...

  • 插件介绍 wordpress程序网站在发布文章时可以给每一片文章添加与之相关的TAG标签,对于TAG标签可以生成很多页面,增加搜索引擎对内容的抓取量。 WP Auto Keywords插件就是一款能自动给文章添加...

  • 5.7 生成列表页 改动 include/arc.listview.class.php 1.先设置 关闭副栏目(在系统----系统基本参数性能选项里) 2.一般网站不需要 栏目交叉 交叉 所以 找到94行注释掉: //获得交叉栏目ID /*if($this-Type...

  • 使用preg_replace将删除所有空白(包括制表符等) $string = user na me $string = preg_replace(/\s+/, , $string); echo $string; // username preg_replace(/\s/u, ,$string) u (PCRE8) 此修正符打开一个与perl不兼容的附加功能. 模式...

  • 1、公共相同部分用引入1个静态文件方式,不解析 2、arclist标签进来不使用属性flag、不使用自定义字段addfields、不使用随机、相同部分用引入1个静态文件方式,不解析 3、tag标签或者关键词内链...

  • Service Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. Apache Server at www.XXX.com Port 80 网站症状:单栏目数据量7万+ 生成栏目504错误或者...

  • windows+r打开运行对话框,输入regedit,点击确定打开注册表 按Ctrl+F键打开查找对话框,输入C:\Windows\system32\notepad.exe,-469 找到后双击打开 修改其值为T文本文档 然后右键,按W,按T。就可以快速新...

  • PHP去除BOM头的方法 BOM头是UTF-8来告诉编辑器:我是UTF8编码。它的编码是\xEF\xBB\xBF 但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题 代码如下: $result = trim($re...

  • 公司:西安蟠龙网络科技有限公司
  • 联系人:张经理
  • 手机/微信:187 2951 9978
  • Q Q: 136 8888 63 点击这里给我发消息
  • 地址:西安市雁塔区唐延南路11号逸翠园i都会
  • dedecms后台增加php导出excel功能实现办法

    这篇文章主要为大家详细介绍了dedecms后台增加php导出excel功能实现办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。 不少朋友希望织梦的后台...

  • 织梦移动端网页直接打开显示在线预览PDF文件

    第一次使用的插件是 pdfobject.js 百度网盘下载地址:http://pan.baidu.com/s/1kUPhYdT 加载 script src=/style/js/pdfobject.js /script script type=text/javascript window.onload = function (){ var success = new PDFObject({ url: pdf文件地...

  • 用php rename()函数移动文件

    网上有一种方法是copy+unlink来移动文件,但是遇到大文件时会消耗大量时间,对性能不怎么友好,可以使用rename()来移动文件,速度非常快 关于rename()函数 bool rename ( string $oldname , string $newname...

  • 传统行业公司可选的几种推广方式

    基于我们公司可选的几种推广方式: 一、关键词优化排名推广(推荐) 指定关键词推广,按天付费,推广我们业务中最重要的一些关键词,达到百度首页才收费,大概一个关键词10元/天左右。...

  • wordpress自动生成tag标签插件-WP Auto Keywords

    插件介绍 wordpress程序网站在发布文章时可以给每一片文章添加与之相关的TAG标签,对于TAG标签可以生成很多页面,增加搜索引擎对内容的抓取量。 WP Auto Keywords插件就是一款能自动给文章添加...

  • dedecms 织梦 数据量达到几十万 生成速度很慢解决办法

    5.7 生成列表页 改动 include/arc.listview.class.php 1.先设置 关闭副栏目(在系统----系统基本参数性能选项里) 2.一般网站不需要 栏目交叉 交叉 所以 找到94行注释掉: //获得交叉栏目ID /*if($this-Type...